我正在对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 ,但是失败,并出现上述错误。请让我知道是否可以提供更多信息。谢谢。
答案 0 :(得分:0)
我只需要对search_after和Name.lowercase而不是Name使用数组,因为这就是Name属性映射的写法(如下所示)
"Name": {
"type": "text",
"fields": {
"lowercase": {
"type": "text",
"analyzer": "mdm_lowercase_analyzer",
"fielddata": true
},
"raw": {
"type": "keyword"
}
}
}