当我按降序搜索ID时,ElasticSearch返回的ID不为最大
我有索引URI
contracts/_doc/
我将文件推送到此处,ID由SQL-DB预生成
这是来自JAVA客户端的代码示例:
final BulkRequest request = new BulkRequest(); contracts.forEach(e -> request.add(new IndexRequest(CONTRACT_INDEX,
CONTRACT_INDEX_TYPE,
String.valueOf(e.getId()))
.source("contractNumber", e.getContractNumber())
)
);
有时我需要查看索引中ID的最大值,然后发送此查询
{ "sort" : [
{ "_id" : {"order" : "desc"}}
],
"size": 1
}
问题在于,ElasticSearch始终返回的值不超过 9999
"hits": [ {
"_index": "contracts",
"_type": "_doc",
"_id": "9999",
"_score": null,
"_source": {
"contractNumber": "2000/290/990990"
},
"sort": [
"9999"
]
}
]
当我执行查询查询时:
{"size": 10000
}
实际结果处于正确状态,我所有的ID都超过了9999,并按
contracts/_doc/10005
返回正确的结果。
请告知我如何解决这种情况
回答:
原因是您的ID是字符串,并且字符串是按字典顺序而不是数字顺序排序的,因此在字符串世界9999> 1000000中。
您应该做的是在文档中包含另一个与ID字段等效的数字字段,并按该数字字段排序。
以上是 当我按降序搜索ID时,ElasticSearch返回的ID不为最大 的全部内容, 来源链接: utcz.com/qa/410809.html