[ElasticSearch]:获取包含特定值

时间:2017-07-21 18:51:37

标签: elasticsearch

以下是用例:

我正在尝试列出包含特定值的elasticsearch中的所有索引。 为了便于说明,让我们考虑以下作为索引模板:

    {
  "order": 0,
  "template": "sample-*",
  "settings": {
    "index.refresh_interval": "300",
    "index.number_of_replicas": "1",
    "index.number_of_shards": "10"
  },
  "mappings": {
    "digital": {
      "_source": {
        "enabled": false
      },
      "_all": {
        "enabled": false
      },
      "properties": {
        "website": {
          "index": "not_analyzed",
          "store": false,
          "type": "string",
          "doc_values": true
        },
        "iab_codes": {
          "store": false,
          "type": "long",
          "doc_values": true
        },
        "audiences": {
          "store": false,
          "type": "long",
          "doc_values": true
        }
      }
    }
  },
  "aliases": {

  }
}

此模板中的audiences字段是一个很长的序列,例如。 [1,2,3]。我基于这个模板每天创建一个索引。如何获取audiences数组字段中包含特定值的所有索引的列表。

列出所有其中audience数组包含值3的索引。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以创建类似于

的搜索查询
http://localhost:9200/sample-*/_search?q=audiences:3&pretty

并使用Java API,您可以尝试获取hits.hits._index

的值

或者更确切地说使用filter_path:

http://localhost:9200/sample*/_search?q=audiences:3&filter_path=hits.hits._index&pretty

Result will look like this