当我按降序搜索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

回到顶部