Когда я использую тип завершения внутри предложения, как описано в документации ElasticSearch (https://www.elastic.co/guide/en/elasticsearch/reference/6.7/search-suggesters-completion.html), мне не удается найти все подходящие слова ( Я получаю только одно подходящее слово в документе)
Я тестирую следующие команды на моем ElasticSearch 6.7.2 (который на данный момент является последним, доступным на AWS):
Удаление индекса, если он существует
curl http://localhost:9200/test -H 'Content-Type: application/json' -X DELETE
Создание индекса
curl http://localhost:9200/test -H 'Content-Type: application/json' -X PUT -d '
{
"mappings": {
"page": {
"properties": {
"completion_terms": {
"type": "completion"
}
}
}
}
}
'
Индексирование документа
curl http://localhost:9200/test/_doc/1 -H 'Content-Type: application/json' -X PUT -d '
{
"completion_terms": ["restaurant", "restauration", "réseau"]
}'
Убедитесь, что документ существует
curl http://localhost:9200/test/_doc/1 -H 'Content-Type: application/json'
Используйте завершение
curl -X GET "localhost:9200/test/_search?pretty=true" -H 'Content-Type: application/json' -d'
{
"_source": ["suggestExact"],
"suggest": {
"suggestExact" : {
"prefix" : "res",
"completion" : {
"field" : "completion_terms"
}
}
}
}
'
Результат:
{
"took" : 6,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 0,
"max_score" : 0.0,
"hits" : [ ]
},
"suggest" : {
"suggestExact" : [
{
"text" : "res",
"offset" : 0,
"length" : 3,
"options" : [
{
"text" : "restaurant",
"_index" : "test",
"_type" : "page",
"_id" : "1",
"_score" : 1.0,
"_source" : { }
}
]
}
]
}
}
Я хочу получить ВСЕ подходящие слова (здесь я получаю не более одного результата на документ)
В примере отсутствуют слова «реставрация» и «реставрация».
Я делаю что-то неправильно ?