ElasticSearch results starting with a particular letter?
我有一个很大的 elasticsearch 数据库,里面满是记录,每条记录都有一个名称字段,它是一个单词。我希望能够从特定字母开始浏览(按名称排序)结果。例如,我希望能够开始显示名称以字母 \\'J\\' 开头的结果,然后能够翻阅所有剩余的结果。
这是名称当前的映射方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | "Name": { "type":"multi_field", "fields": { "name_exact": { "type":"string", "index":"not_analyzed" }, "name_simple": { "type":"string", "analyzer":"simple" }, "name_snow": { "type":"string", "analyzer":"snowball" } } } |
有没有可以让我这样做的查询?
您可以使用前缀过滤器(默认缓存)或前缀查询(不可缓存)。
请注意,查询字符串本身不会被分析。
如果你想对查询字符串进行分析,你应该改变你的映射并添加一个 edge-ngram 分析字段;然后您可以将其与匹配查询一起使用。