使用数组字段的大小查询Elasticsearch文档

时间:2018-03-02 14:33:38

标签: elasticsearch

对于names中的某些类型customer,我有一个类型为数组Elasticsearch的属性。我想为此类型创建一个映射,以便通过为此属性size创建一个额外字段来查询使用数组长度的客户。

以下查询是要实现的所需查询:

# Search for data using the size of the array [DESIRED, NOT WORKING]
GET example-index/customer/_search
{
  "query": {
    "term": {
      "names.size": {
        "value": 3
      }
    }
  }
}

我已尝试使用此keyword类型的token_count分析器,但该功能无效:

# Create index with mapping
PUT example-index
{
  "mappings": {
    "customer": {
      "properties": {
        "names": {
          "type": "keyword",
          "fields": {
            "size": {
              "type": "token_count",
              "analyzer": "keyword"
            }
          }
        }
      }
    }
  }
}

# Create some data
POST example-index/customer/1
{
  "names": [
    "a b",
    "c d e f",
    "g h i j k l"
  ]
}

我知道我可以使用script查询查询长度,但使用额外的字段对我来说会更好:

# Search for data using the size of the array [WORKING, NOT DESIRED]
GET example-index/customer/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "script": {
            "script": "doc['names'].values.length == 3"
          }
        }
      ]
    }
  }
}

0 个答案:

没有答案