ElasticSearch:如何在多个索引中查找相同的字段名?

33qvvth1  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(2)|浏览(281)

我需要找出哪些ES索引包含名为“book_id”的字段。我尝试使用以下查询:

GET */_search
{
 "query": {
    "term": {
      "field_name": {
        "value": "book_id",
        "boost": 1.0
      }
    }
  }
}

以及针对/_mapping运行的相同查询。
我希望检索的是一个索引列表,其中的文档包含“book_id”字段。
正确的做法是什么?

ukqbszuj

ukqbszuj1#

您可以在_index field上进行聚合:

{
  "query": {...},
  "aggs": {
    "by_index": {
      "terms": {
        "field": "_index",
        "size": 100
      }
    }
  }
}

这将返回按索引分组的与查询匹配的文档数。当索引很多时,可能需要更改size参数或使用composite aggregation

mkshixfv

mkshixfv2#

您可以在所有索引上进行搜索,并对_index元字段进行聚合,以获得所需的结果。
下面是一个完整的弹性查询-

POST /_search
{
  "size": 0, 
  "query": {
    "bool": {
      "filter": {
        "exists": {
          "field": "book_id"
        }
      }
    }
  },
  "aggs": {
    "indexes": {
      "terms": {
        "field": "_index",
        "size": 100
      }
    }
  }
}

相关问题