Я играл с ElasticSearch для моего нового проекта.Я установил анализаторы по умолчанию для использования токена-фильтра ngram.Это мой файлasticsearch.yml:
index:
analysis:
analyzer:
default_index:
tokenizer: standard
filter: [standard, stop, mynGram]
default_search:
tokenizer: standard
filter: [standard, stop]
filter:
mynGram:
type: nGram
min_gram: 1
max_gram: 10
Я создал новый индекс и добавил в него следующий документ:
$ curl -XPUT http://localhost:9200/test/newtype/3 -d '{"text": "one two three four five six"}'
{"ok":true,"_index":"test","_type":"newtype","_id":"3"}
Однако при поиске по запросу text:hree
или text:ive
, или любые другие частичные условия, ElasticSearch не возвращает этот документ.Он возвращает документ только тогда, когда я ищу точный термин (например, text:two
).
Я также попытался изменить файл конфигурации так, чтобы default_search также использовал фильтр токенов ngram, но результат был таким же.Что я здесь не так делаю и как мне это исправить?