Ale*_*rev 3 lucene search-engine elasticsearch
Elasticsearch 是否保持多值字段的顺序?
即,如果我将以下值放入字段中:
{
"values": ["one", "two", "three"],
"values_original": ["1", "2", "3"]
}
Run Code Online (Sandbox Code Playgroud)
(鉴于未分析字段)
我能确定列表的内容总是按照我放在那里的顺序返回吗?
在上面的示例中,我想确保“values”中第一个位置的“one”始终对应于“values_original”等中的“1”。
我也可以将它保留为嵌套对象,即
{
"values": [
{"original": "1", "new": "one"},
{"original":"2", "new":"two"},
{"original":"3","new":"three"}
]
}
Run Code Online (Sandbox Code Playgroud)
但我想避免开销。
如果保证保留多值字段中的值顺序,那么我保留两个并行多值字段的方法将起作用。
我找到了答案。
是的,我可以依靠 Elasticsearch 在文档中的多值字段中保持值的顺序。(但是,当我执行搜索时,Elasticsearch 没有关于某个术语在什么位置的可用信息)。
根据文档:
当您从 Elasticsearch 取回文档时,任何数组的顺序都与索引文档时的顺序相同。您返回的 _source 字段包含您编入索引的完全相同的 JSON 文档。
但是,数组作为无序的多值字段编入索引(使其可搜索)。在搜索时,您不能引用“第一个元素”或“最后一个元素”。相反,将数组视为一袋值。
| 归档时间: |
|
| 查看次数: |
3316 次 |
| 最近记录: |