首页 > 解决方案 > Elasticsearch 查询 + Agg 搜索查询

问题描述

我的 elasticsearch 中的数据包含一个名为facilityName. 我有一个要求,我必须查看是否有任何重复记录facilityNameTypeCode为“UWI”并且具有相同的facilityName值。下面是一个结构示例:

    "facilityName": [
      {
        "facilityNameTypeId": {
          "facilityNameTypeCode": "Name"
        },
        "facilityName": "Rishav jayswal"
      },
      {
        "facilityNameTypeId": {
          "facilityNameTypeCode": "Name"
        },
        "facilityName": "R.M"
      }
  ]

这是我创建的查询:

GET _search
{
    "query" : {
        "term" : {"facilityName.facilityNameTypeId.facilityNameTypeCode" : "UWI"}
    },

    "aggs" : {
        "duplicateNames": {
            "terms": {
                        "field": "facilityName.facilityName",
                        "size": 0,
                        "min_doc_count": 2
                    }
            }
    }
}

但我有这个错误:

{
  "error": {
    "root_cause": [
      {
        "type": "parsing_exception",
        "reason": "[terms] failed to parse field [size]",
        "line": 10,
        "col": 27
      }
    ],
    "type": "parsing_exception",
    "reason": "[terms] failed to parse field [size]",
    "line": 10,
    "col": 27,
    "caused_by": {
      "type": "illegal_argument_exception",
      "reason": "[size] must be greater than 0. Found [0] in [duplicateNames]"
    }
  },
  "status": 400
}

谁能建议如何做到这一点?

标签: elasticsearchelasticsearch-aggregationelasticsearch-query

解决方案


错误很明显

[size] 必须大于 0。在 [duplicateNames] 中找到 [0]

因此,只需将 size 设置为大于 0 的值,无论如何将其设置为 0 没有多大意义

        "terms": {
          "field": "facilityName.facilityName",
          "size": 10,
          "min_doc_count": 2
        }

推荐阅读