ElasticSearch 结果以特定字母开头?

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 分析字段;然后您可以将其与匹配查询一起使用。