当前位置: 首页 > 面试题库 >

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

范豪
2023-03-14
问题内容

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"}
    ]
}

但我想避免开销。

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


问题答案:

Elasticsearch-
权威指南
说:

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

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

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



 类似资料:
  • 在ElasticSearch中为多个字段指定排序顺序的最佳方法是什么?查询字符串格式似乎根本不起作用: 人们希望先按字段1排序,然后按字段2排序,但似乎只有一个字段排序正确。完整的符号效果更好,但第一个条目偶尔会出现错误的搜索顺序:

  • 问题内容: 以下代码以相同的插入顺序为我提供了输出。我阅读了Javadoc,他们甚至没有谈论插入顺序。有人可以帮助我获取正确的信息。 问题答案: 不,不是的。要保留插入顺序,请改用(javadoc)。 而且,现在优先于,因为它具有不必要的并发开销。(请参见HashMap和Hashtable之间的区别?。)

  • 问题内容: 我知道React可以异步并批量执行状态更新以优化性能。因此,在调用之后,您将永远无法相信要更新的状态。但是你可以信任的反应 更新相同的顺序状态被称为对 相同的组件? 不同的组件? 考虑在以下示例中单击按钮: 1. 在以下情况下,是否有可能 a为假而b为真 : 2. 在以下情况下,是否有可能 a为假而b为真 : 请记住,这些是我用例的极端简化。我意识到我可以以不同的方式进行操作,例如,在

  • 问题内容: 我知道索引的重要性以及联接的顺序如何改变性能。我已经完成了与多列索引相关的大量阅读,但仍未找到我的问题的答案。 我很好奇我是否做多列索引,如果它们指定的顺序根本很重要。我的猜测是,不会,并且引擎会将它们视为一个组,而顺序无关紧要。但我想验证一下。 例如,从mysql的网站(http://dev.mysql.com/doc/refman/5.0/en/multiple-column- i

  • 问题内容: 在C语言中,在结构中定义字段的顺序是在内存中实例化它们的顺序。考虑到内存对齐,以下结构在内存中的大小将为8个字节,如图所示,但是如果将字段反转,则只有6个字节,因为不需要任何对齐填充。 这种顺序保证存在于C结构,C ++类(和结构)和Objective-C类中。 Swift类和结构中的字段是否同样保证了存储顺序?或者(鉴于该语言不支持与列出的其他指针相同的指针),编译器是否在编译时为您

  • 问题内容: 例如,我的csv具有以下列: 我需要以相同的顺序写回列。该立即搅乱秩序,所以我相信它更与读者的问题。 问题答案: Python的不会在3.6之前保持顺序(但是,无论该版本如何,该类都被修改为返回s)。 然而,实例您使用(你读过的第一行后- !) 确实 有一个字符串列表,其中 IS 秩序。 所以, 会告诉你的是,为了确实维护(中当然, 千万不要 在-这是在Python本质上是不可能的-