Elasticsearch是否保持多值字段的顺序?

问题描述

Elasticsearch- 权威指南说:

当您从Elasticsearch取回文档时,所有数组的顺序都与索引该文档时的顺序相同。您返回的_source字段包含与索引相同的JSON文档。

但是,数组被索引(可搜索)为无序的多值字段。在搜索时,您不能引用“第一个元素”或“最后一个元素”。而是将数组视为一袋值。

因此,对于存储的字段,似乎保留了顺序,对于索引的字段,则没有保留。

解决方法

Elasticsearch是否保持多值字段的顺序?

即,如果我在字段中输入了以下值:

{
    "values": ["one","two","three"],"values_original": ["1","2","3"]
}

(鉴于未分析字段)

我是否可以确定列表的内容将始终按照与放置列表相同的顺序返回?

在上面的示例中,我想确保“值”中第一个位置的“一个”将始终与“ values_original”等中的“ 1”相对应。

我也可以将其保留为嵌套对象,即

{
    "values": [
        {"original": "1","new": "one"},{"original":"2","new":"two"},{"original":"3","new":"three"}
    ]
}

但我想避免开销。

如果可以保证保留多值字段中的值顺序,那么我保留两个并行多值字段的方法将起作用。

相关文章

猜你在找的编程问答相关文章

怎样才能让 Git“忘记”一个被跟踪但现在在 .gitignore 中的文件?
Python 中的metaclasses是什么?
如何在 Linux 上查找包含特定文本的所有文件?
如何从异步调用返回响应
如何在一个表达式中合并两个字典(取字典的并集)?
HTTP 中的 POST 和 PUT 有什么区别?
使用 Git 将最近的提交移动到新分支
在 JavaScript 比较中应该使用哪个等于运算符 (== vs ===)?