[search_after]错误中VALUE_STRING的未知键

时间:2019-08-26 08:16:22

标签: elasticsearch

我正在对18,000个主题的结果集进行弹性搜索。因此,我正在使用search_after。但是在第一次使用此参数后,我遇到了以下错误。

Unknown key for a VALUE_STRING in [search_after]

我正在使用弹性搜索5.1,查询如下

{
  "query": {
    "bool": {
      "filter": [
        {
          "bool": {
            "should": [
              {
                "match": {
                  "CategoryId": "1-4534"
                }
              }
            ],
            "minimum_should_match": 1
          }
        }
      ]
    }
  },
  "size": 100,
  "from": 0,
  "sort": {"Name":"asc"} ,
  "search_after": "D106891_1"
}

要求不是对可以通过弹性搜索返回的结果数量设置任何明确的限制(默认为10,000),而是要进行分页,以防止将来用户数据超过设置的限制时代码不会出现任何问题。我通过循环发送查询来执行分页,一次获得100个主题。这是通过将大小设置为100并将其增量值设置为  来自,每次迭代100次。当我达到 from + size = 10000 时,我要添加 search_after ,但是失败,并出现上述错误。请让我知道是否可以提供更多信息。谢谢。

1 个答案:

答案 0 :(得分:0)

我只需要对search_after和Name.lowercase而不是Name使用数组,因为这就是Name属性映射的写法(如下所示)

           "Name": {
                        "type": "text",
                        "fields": {
                            "lowercase": {
                                "type": "text",
                                "analyzer": "mdm_lowercase_analyzer",
                                "fielddata": true
                            },
                            "raw": {
                                "type": "keyword"
                            }
                        }
                    }