I'm very new to Elasticsearch and am currently trying to get my head around analyzers with respect to the completion suggester
I have a list of places like so:
- London
- The London Eye
- The London Dungeon
- etc...
By setting the mapping for a completion suggester to the following:
'place_suggest': {
'type': 'completion',
'payloads': true,
'index_analyzer' : 'stop',
'search_analyzer' : 'stop',
'preserve_position_increments' : false
}
I am now able to get all three of the above suggestions returned when the suggesters text input is simply the letter L
However I would like The London Eye
to be returned when the user types the word eye
and likewise to have The London Dungeon
returned when the user types Dungeon
(And of course for any prefixes of those terms)
I have been playing with the different analyzers and settings for the better part of today with no success.
What kind of analyzer do I need to use to achieve the above?
You can achieve what you want with the Completion Suggester. Use multiple input fields and a single unified output. If there is a match on one of the input fields the output field will be returned.
curl -X PUT localhost:9200/places/place/1 -d '
{
"title" : "The London Eye",
"place_suggest" : {
"input" : [
"The London Eye",
"Eye"
],
"output":"The London Eye"
}
}'
curl -X PUT localhost:9200/places/place/2 -d '
{
"title" : "The London Dungeon",
"place_suggest" : {
"input" : [
"The London Dungeon",
"Dungeon"
],
"output":"The London Dungeon"
}
}'
来源:https://stackoverflow.com/questions/24899480/what-elasticsearch-analyzer-to-use-for-this-completion-suggester