当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch在嵌套字段中排序值

乜烨霖
2023-03-14

Sup社区。我有个问题。我正在使用Elasticsearch 6.4

我的数据结构的一部分:

{ "_id" : 1,
"dirs" : [
  {"date_since":"2018-01-01", "date_by":"2018-12-01", "dir_id": 1},
  {"date_since":"2017-05-01", "date_by":null, "dir_id": 2}
],
"cost": 100
}

{ "_id" : 2,
"dirs" : [
  {"date_since":"2016-01-01", "date_by":null, "dir_id": 3},
  {"date_since":"2015-05-01", "date_by":"2016-01-01", "dir_id": 4},
  {"date_since":"2016-05-01", "date_by":null, "dir_id": 5}
],
"cost": 200
}

我需要得到按成本排序的文档desc,我需要排序dirs字段中的值date_by字段与nulls-first。

如何对嵌套字段内的值进行排序,而不按此嵌套字段对文档进行排序?

共有1个答案

颛孙钱青
2023-03-14

看起来你需要这个:https://stackoverflow.com/a/43440405/2255344这包含一个在“internal\u hits”上使用“sort”组合“嵌套”查询的示例。

 类似资料:
  • 我将Elasticsearch 6与PHP结合使用。 我的文档有一个嵌套字段,如下所示: 基本上每个文档都有很多价格,但我知道每个文档只有一个价格与过滤器/查询匹配。 我用它来搜索和排序,改编自这里的教程:https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-sorting.html(对PHP数组格式表示抱歉): 我得

  • Elasticsearch排序不适用于嵌套字段。它显示了升序和降序的混合值。比如40,30,50。它不是按升序显示的:30,40,50 查询:

  • 问题内容: 我正在尝试在Elasticsearch中进行嵌套排序,但到目前为止没有成功。 我的数据结构: 我想根据文档中第一作者的姓氏对文档进行排序。 使用的映射: 使用SearchRequestBuilder(JAVA)进行排序: 这行得通,但没有给出想要的结果(例如,首先是“叫卖”,然后是“罗杰”)。 我错过了什么吗?有没有办法表明Elasticsearch访问数组authorList的ind

  • 我试图在Elasticsearch中进行嵌套排序,但到目前为止还没有成功。 我的数据结构: 我想根据文档中第一作者的姓氏对文档进行排序。 使用SearchRequestBuilder(JAVA)进行排序: 这是有效的,但不能给出想要的结果(例如,首先是“霍金”,然后是“罗杰”)。 我是不是漏掉了什么?是否有一种方法可以指示Elasticsearch访问数组authorlist的index=0?是否

  • 在这里,我得到了错误: “无效的术语聚合顺序路径[price>price>price.max]。术语桶只能在子聚合器路径上排序,该路径由路径中的零个或多个单桶聚合和路径末尾的最终单桶或度量聚合组成。子路径[price]指向非单桶聚合” 如果我按持续时间聚合排序,查询可以正常工作,如 那么,有什么方法可以通过嵌套字段上的嵌套聚合来排序聚合吗?

  • 我试图在elasticsearch中对嵌套字段进行排序,但在按升序排序时,它总是在排序列表的顶部显示带有空值嵌套字段的文档。我希望排序(升序和降序),并希望空值嵌套字段文档出现在排序列表的末尾。 这是我正在使用的排序查询: 下面是我应用的与嵌套的“标记”字段相关的映射: 样品有效载荷: