我正在尝试编写一个弹性搜索查询,该查询应列出文档中各个字段保留的所有不同值。当字段为关键字类型时,术语聚合查询可以正常工作,并且我可以看到带有其计数的值但是,当我查询不同的柑橘类水果类型时,没有任何结果,映射如下所示:
{
"vegetables":{
"type": "text",
"fields": {
"keyword" : {
"type" : "keyword",
"ignore_above": 256
}
}
},
"fruits": {
"properties": {
"citrus": {
"properties": {
"orange": {
"type": "long"
},
"lemon": {
"type": "long"
},
"kiwi": {
"type": "long"
}
}
}
}
}
}
我期望的结果是:
"aggregations": {
"distinct_citrusy_fruits"{
"buckets" : [
{
"key":"oranges",
"doc_count": 23
},
{
"key":"lemon",
"doc_count": 21
},
{
"key":"kiwi",
"doc_count": 23
}
]
}
}
当我为“蔬菜”字段(这是一种关键字类型)进行术语汇总时,我能够如上所述获得存储桶。 在这种情况下,如何获取不同的计数?此外,我没有选择更改文档格式的选项。
答案 0 :(得分:0)
我认为您不能仅对值查询或对字段名称运行聚合。 对于水果,我期望以下映射:
{
"fruits": {
"properties": {
"citrus": {
"properties": {
"kind": {
"type": "keyword"
},
"count": {
"type": "long"
}
}
}
}
}
}
也许您可以使用_field_names字段,该字段包含每个具有值的字段名。 (https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-field-names-field.html)