My intent is to search for a phrase against multiple fields.
{
"multi_match" : {
"query" : "king of baro",
"fields" : [ "filed1", "filed2", "filed3","filed5^9","filed6",filed7^9"],
"type" : "phrase_prefix",
"boost" : 10.0,
"tie_breaker" : 0.0
}
}
The above query returns, "king of baroda" and it works as expected.
But, when i search for "king of bar", it doesn't return anything.
{
"multi_match" : {
"query" : "king of bar",
"fields" : [ "filed1", "filed2", "filed3","filed5^9","filed6",filed7^9"],
"type" : "phrase_prefix",
"boost" : 10.0,
"tie_breaker" : 0.0
}
}
Summary,
Search for "king of bar" - No result
Search for "king of baro" - returns "king of baroda"
Search for "king of baroda" - returns "king of baroda"
Is there any configuration I am missing?
Mapping file :-
http://localhost:9200/sec/_mapping/
{
"sec":{
"mappings":{
"sec":{
"properties":{
"filed1":{
"type":"string"
},
"filed2":{
"type":"string"
},
"filed3":{
"type":"string"
},
"filed4":{
"type":"string"
},
"filed5":{
"type":"string"
},
"filed6":{
"type":"string"
},
"filed7":{
"type":"string"
}
}
}
}
}
}
Analyzer, from elasticsearch.yml:
index:
analysis:
analyzer:
security_edge_ngram_analyzer:
alias: [security_edge_ngram_analyzer]
tokenizer: security_edge_ngram_tokenizer
tokenizer:
security_edge_ngram_tokenizer:
type: edgeNGram