如何解决当我按降序搜索ID时,ElasticSearch返回的ID不为最大
原因是您的ID是字符串,并且字符串是按字典顺序而不是数字顺序排序的,因此在字符串世界9999> 1000000中。
您应该做的是在文档中包含另一个与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
返回正确的结果。
请告知我如何解决这种情况
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。