Elasticsearch 按嵌套对象的数量排序

标签 elasticsearch

我有以下 ES 内容,基本上是一个包含网站嵌套报价的产品列表。

{
"product": {
  "ean": "abc",
  "features": {
     "product_type": "DVD player"
  },
  "color": "Black",
  "manufacturer": "Sony",
  "sitedetails": [
     {
        "name": "amazon.com",
        "sku": "zzz",
        "url": "http://www.amazon.com/dp/zzz"
     },
     {
        "name": "bestbuy.com",
        "sku": "aaa",
        "url": "http://www.bestbuy.com/aaa"
     }
  ],
  "category": "Portable DVD Players"
 },
 product: { etc etc},
 product: { etc etc},
}

如何按站点详细信息的数量排序?

谢谢!

最佳答案

您可以使用 Painless 来完成,因此您不必启用动态脚本。

{
  "sort": [{
    "_script": {
       "type": "number",
       "script": "params._source?.product?.sitedetails?.length ?: 0",
       "order": "desc"
     }
   }]
}

我还包括对空字段的处理。看 https://www.elastic.co/guide/en/elasticsearch/painless/master/_operators.html

https://github.com/elastic/elasticsearch/issues/20068

关于Elasticsearch 按嵌套对象的数量排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35897062/

相关文章:

database - Elasticsearch-River和nGrams

c# - Elasticsearch 巢 : Bulk-indexing operation does not make use of specified document IDs

ruby-on-rails - elasticsearch-rails 空结果

c# - 如何使用NEST Library在Elasticsearch中的嵌套对象中的同一字段上搜索多个值?

elasticsearch - 在logstash配置中进行kafka并将输出发送到ES

Elasticsearch 标准分词器行为和单词边界

elasticsearch - 无法为同一索引 elasticsearch 和 Kibana 创建两种类型

elasticsearch - 仅在加载Elastic Search索引以使用ElasticSearch输入插件时如何加载特定字段

elasticsearch - 如何保留某些索引比其他索引更多的时间?

elasticsearch - 无法访问 ElasticSearch 聚合脚本中的 doc ['field' .value