Elasticsearch Suggest API -Can't search numbers
autocomplete, autosuggest, elasticsearch
Solution
I've solved it, simple really, but maybe a bug?
Instead of:
PUT restaurants/restaurant/_mapping
{
"location": {
"index_analyzer": "whitespace",
"search_analyzer": "whitespace",
"properties": {
"name_suggest": {
"type": "completion",
"payloads": true
}
}
}
}
I now have:
PUT restaurants/restaurant/_mapping
{
"location": {
"properties": {
"name_suggest": {
"type": "completion",
"index_analyzer": "whitespace",
"search_analyzer": "whitespace",
"payloads": true
}
}
}
}
Problem
I'm using the Suggest API to create an autocomplete for restaurant names, but I've run into a small problem. Some restaurant names start with numbers, for example: ``` 68 - 86 Bar & Restaurant ``` I want to be able to type `68` and get the restaurant back. I've tried using the whitespace analyzer, but it doesn't fix my issue. Here is the analyze output for the restaurant name: ``` { "tokens": [ { "token": "68", "start_offset": 0, "end_offset": 2, "type": "<NUM>", "position": 1 }, { "token": "86", "start_offset": 5, "end_offset": 7, "type": "<NUM>", "position": 2 }, { "token": "bar", "start_offset": 8, "end_offset": 11, "type": "<ALPHANUM>", "position": 3 }, { "token": "restaurant", "start_offset": 14, "end_offset": 24, "type": "<ALPHANUM>", "position": 4 } ] } ``` Here are the commands to reproduce my issue: ``` PUT restaurants { } PUT restaurants/restaurant/_mapping { "location": { "index_analyzer": "whitespace", "search_analyzer": "whitespace", "properties": { "name_suggest": { "type": "completion", "payloads": true } } } } POST restaurants/restaurant/1 { "name_suggest": { "input": [ "68 - 86 Bar & Restaurant" ], "output": "68 - 86 Bar & Restaurant", "payload": { "id": 1067 } } } POST restaurants/_suggest { "suggestions": { "text": "68 - 86", "completion": { "field": "name_suggest" } } } ``` I don't get any results from _suggest. Any help would be appreciated.