搜索整数Elasticsearch的聚合列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索整数Elasticsearch的聚合列表相关的知识,希望对你有一定的参考价值。

我正在设计一个新的索引并在我的数据中有一些结构可能会给搜索带来一些麻烦。

给定文档类型“目录”(将其转换为更一般的设置)

具有以下数据结构,

{
  "_id": 1,
  "categories": [
    {
      "category_name": "aaaa",
      "nb_items": 6
    },
    {
      "category_name": "bbbb",
      "nb_items": 5
    }
  ]
},
{
  "_id": 2,
  "categories": [
    {
      "category_name": "cccc",
      "nb_items": 9
    },
    {
      "category_name": "bbbb",
      "nb_items": 2
    }
  ]
}

如何查询所有类别的项目数(按category_names的nb_items之和)> 10但bbbb类别中的nb_items> 4以仅检索第一个文档的文档?

使用两个独立的列表类别和项目或使用此类嵌套文档会更容易吗?

答案

这样可行。您可以使用过滤器部分中的脚本创建总nb条件,但它会非常慢。

  {
      "size": 0,
      "query" : {
    "nested" : {
        "path" : "categories",
        "query" : {
            "bool" : {
                "must" : [
                    {
                        "term" : {"categories.origin" : "bbbb"}
                    },
                    {
                        "range" : {"categories.nb_items" : {"gt" : 4}}
                    }
                ]}
            }
        }
    },
      "aggregations": {
        "totalnbbydoc": {
          "terms": {
            "field": "youriddoc",
            "size": 10000
          },
          "aggregations": {
            "totalByNested": {
              "nested": {
                "path": "categories"
              },
              "aggregations": {
                "nbtotal": {
                  "sum": {
                    "field": "categories.nb_items"
                  }
                }
              }
            },
            "paidAmount_filter": {
              "bucket_selector": {
                "script": {
                  "inline": "params.totalnbbydoc > 10"
                },
                "buckets_path": {
                  "totalnbbydoc": "totalByNested>nbtotal"
                }
              }
            }
          }
        }
      }
    }

以上是关于搜索整数Elasticsearch的聚合列表的主要内容,如果未能解决你的问题,请参考以下文章

聚合结果的 Elasticsearch 过滤器(用于搜索和聚合)

Elasticsearch 之聚合分析入门

Elasticsearch 聚合功能

Elasticsearch 聚合顺序与搜索结果相同

Elasticsearch系列---常见搜索方式与聚合分析

ElasticSearch聚合应该怎么学