我一直在为我的新项目玩弄ElasticSearch。我已将默认分析器设置为使用ngram令牌过滤器。这是我的elasticsearch.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令牌过滤器,但结果仍然相同。我在这里做错了什么,如何纠正?