我在elasticsearch中有一个简单的索引,我的所有id都是手动添加的,即我不添加带有自动字符串id的文档。
现在的需求是逐页获取所有文档的列表,并按文档id(即_id)排序
当我用 _id 尝试这个时,它不起作用。然后我在论坛上查找它并发现我必须使用 _uid 来实现这一点。这确实有效,尽管我不知道如何。但另一个问题是排序就像 _id 是字符串一样完成。它实际上是一个字符串。但我希望结果就像 _id 是一个数字一样。
所以这里有两个问题:
为什么排序不适用于 _id 而适用于 _uid
有没有办法将文档ID排序为数字而不是整数
例如,如果我的文档 ID 是1, 2, 3, ..... ,55
我按以下顺序得到结果:
1,10,11,12, ... ,19,2,20, ... 很快
虽然我想按以下顺序获得结果:
1,2,3, ... 很快
非常感谢任何帮助!
有_id索引:
{
"mappings": {
"some_type": {
"_id": {
"index": "not_analyzed"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
并使用脚本:
{
"sort": {
"_script": {
"type": "number",
"script": "doc['_id'].value?.isInteger()?doc['_id'].value.toFloat():null",
"order": "asc"
}
}
}
Run Code Online (Sandbox Code Playgroud)
尽管我强烈建议,如果可能的话,将 id 更改为integer包含string数字。
我有点怀疑它是否有效,_uid因为_uid它是 type 和 id 之间的组合。
| 归档时间: |
|
| 查看次数: |
16426 次 |
| 最近记录: |