对于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"
}
}
]
}
}
}