elasticsearch Elasticsearch是否保持多值字段的顺序?,elasticsearch,lucene,search-engine,elasticsearch,Lucene,Search Engine" /> elasticsearch Elasticsearch是否保持多值字段的顺序?,elasticsearch,lucene,search-engine,elasticsearch,Lucene,Search Engine" />

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

elasticsearch Elasticsearch是否保持多值字段的顺序?,elasticsearch,lucene,search-engine,elasticsearch,Lucene,Search Engine,Elasticsearch是否保持多值字段的顺序 即,如果我在字段中输入了以下值: { "values": ["one", "two", "three"], "values_original": ["1", "2", "3"] } (假设未分析字段) 我能确保列表的内容总是按照我放在那里的顺序返回吗 在上面的例子中,我想确保“values”中第一个位置的“one”始终对应于“values\u original”中的“1”等 我还可以将其作为嵌套对象保存,即 { "val

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

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

{
    "values": ["one", "two", "three"],
    "values_original": ["1", "2", "3"]
}
(假设未分析字段)

我能确保列表的内容总是按照我放在那里的顺序返回吗

在上面的例子中,我想确保“values”中第一个位置的“one”始终对应于“values\u original”中的“1”等

我还可以将其作为嵌套对象保存,即

{
    "values": [
        {"original": "1", "new": "one"}, 
        {"original":"2", "new":"two"},
        {"original":"3","new":"three"}
    ]
}
但是我想避免开销


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

我找到了答案

是的,我可以依靠Elasticsearch在文档的多值字段中保持值的顺序。(但是,当我执行搜索时,Elasticsearch没有关于某个术语在什么位置的信息)

根据文件:

当您从Elasticsearch获取文档时,任何数组的顺序都将与为文档编制索引时的顺序相同。源字段 您返回的JSON文档与您返回的JSON文档完全相同 索引

但是,数组被编入索引,可以作为无序的多值字段进行搜索。在搜索时,您不能引用“第一个” “元素”或“最后一个元素”。更确切地说,将数组视为 价值观

说:

当您从Elasticsearch获取文档时,任何数组的顺序都将与为文档编制索引时的顺序相同。返回的_源字段包含与索引的JSON文档完全相同的JSON文档

但是,数组被编入索引,可以作为无序的多值字段进行搜索。在搜索时,您不能引用“第一个元素”或“最后一个元素”。相反,可以将数组视为一包值

所以,对于存储字段,顺序似乎是保留的,而对于索引字段,则不是