我试图从ElasticSearch获取所有唯一的suite_name
字段,但我的aggs
并未返回任何存储分区。
我正在使用此映射
{
"functional_tests": {
"mappings": {
"web_test_result": {
"properties": {
"duration": {
"type": "long"
},
"fail_category": {
"type": "string"
},
"fail_info": {
"properties": {
"message": {
"type": "string"
},
"screenshot_url": {
"type": "string"
},
"stack": {
"type": "string"
}
}
},
"fail_message": {
"type": "string"
},
"fail_stack": {
"type": "string"
},
"file": {
"type": "string"
},
"finish_time": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"instance_id": {
"type": "long"
},
"order_number": {
"type": "long"
},
"query": {
"properties": {
"term": {
"properties": {
"instance_id": {
"type": "long"
},
"suite_name": {
"type": "string"
}
}
}
}
},
"screenshot_url": {
"type": "string"
},
"size": {
"type": "long"
},
"status": {
"type": "string"
},
"suite_id": {
"type": "string"
},
"suite_title": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
},
"test_id": {
"type": "string"
},
"test_title": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
},
"timedOut": {
"type": "boolean"
}
}
}
}
}
}
这是aggs
GET functional_tests/web_test_result/_search
{
"size": 0,
"aggs" : {
"suite_titles" : {
"terms" : {
"field" : "suite_title.raw",
"size" : 1000
}
}
}
}
返回给我
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 3383,
"max_score": 0,
"hits": []
},
"aggregations": {
"suite_titles": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": []
}
}
}
如果我在aggs
上执行suite_id
,这是一个令牌,我就会获得存储桶。
答案 0 :(得分:0)
从映射中,您可以验证suite_id
的类型为string
,并且从Elasticsearch的默认映射为not_analyzed
。
.raw
适用于分析的字段,其中suite_id.raw
会为您提供未分析的值,suite_id
会为您提供分析值。
您没有任何分析值,因此没有.raw
字段。您只能使用suite_id
。