elasticsearch - [search_after] 错误中的 VALUE_STRING 的未知键
问题描述
我正在对 18,000 个主题的结果集进行弹性搜索调用。因此我正在使用search_after。但是在第一次使用这个参数后我得到了以下错误。
Unknown key for a VALUE_STRING in [search_after]
我用的是elasticsearch 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 个主题。这是通过将 size 设置为 100 并将值 从 每次迭代增加 100 来实现的。当我到达 from+size = 10000时,我正在添加 search_after 但它因上述错误而失败。如果我可以提供更多信息,请告诉我。谢谢。
解决方案
我只需要对 search_after 和 Name.lowercase 使用数组而不是 Name,因为这就是 Name 属性的映射的编写方式(如下所示)
"Name": {
"type": "text",
"fields": {
"lowercase": {
"type": "text",
"analyzer": "mdm_lowercase_analyzer",
"fielddata": true
},
"raw": {
"type": "keyword"
}
}
}
推荐阅读
- kubernetes-helm - Helm 和 minikube:缺少服务 ip
- kotlin - 以类为键的 Kotlin Map?
- php - Laravel 我不能只显示通过 user_email 检查的用户创建的对象,就像每个用户都不同的购物车
- javascript - 如何在Javascript中按标签包装列表项?
- c++ - 关于不允许重复的容器的放置和插入效率不同的混淆
- jenkins - Jenkins 的 Jira 触发器插件不起作用
- javascript - 每次刷新页面时扣除计时器计数(Vanilla Javascript)
- rest - 用于预先未知方法的 RESTful API http 方法
- android - 列出 XML 文件中的视图时出现“未解析的引用”错误
- highcharts - Highcharts 日期被误解