ElasticSearch结果以特定字母开头?

时间:2014-09-16 17:21:56

标签: elasticsearch

我有一个大型的弹性搜索数据库,里面有很多记录,每个记录都有一个名字字段,这是一个单词。我希望能够通过从特定字母开始的(按名称排序)结果进行翻页。例如,我希望能够开始显示名称以字母'J'开头的结果,然后能够翻阅所有剩余的结果。

这是Name当前的映射方式:

                   "Name": {
                      "type": "multi_field",
                      "fields": {
                        "name_exact": {
                          "type": "string",
                          "index": "not_analyzed"
                        },
                        "name_simple": {
                          "type": "string",
                          "analyzer": "simple"
                        },
                        "name_snow": {
                          "type": "string",
                          "analyzer": "snowball"
                        }
                      }
                    }

是否有可以让我这样做的查询?

1 个答案:

答案 0 :(得分:2)

您可以使用prefix filter(默认缓存)或prefix query(不可缓存)。 请注意,查询字符串本身是分析。

如果要对查询字符串进行分析,则应更改映射并添加edge-ngram分析字段;然后,您可以将其与match query一起使用。