在elasticsearch中,我想获得这些术语的独特术语和数量。
index: doc1: filetype(multivalued): pdf, zip, zip, txt expected result: pdf: 1 zip: 2 txt: 1
我做了这个查询,但是我收到了一个错误。
"aggs": {
"uniqueTerms": {
"terms": {
"field": "filetype"
}
},
"aggs": {
"count": {
"cardinality": {
"field": "filetype"
}
}
}
}
如何进行查询以获得结果?
索引映射已更新:
"file" : {
"properties" : {
"filetype" : {
"type" : "string",
"norms" : {
"enabled" : false
},
"fields" : {
"raw" : {
"type" : "string",
"index" : "not_analyzed",
"ignore_above" : 256
}
}
}
}
}
答案 0 :(得分:0)
良好的开端,你几乎就在那里。您只需要将cardinality
聚合更深一层地嵌套。
{
"aggs": {
"uniqueTerms": {
"terms": {
"field": "filetype"
},
"aggs": {
"count": {
"cardinality": {
"field": "filetype"
}
}
}
}
}
}
答案 1 :(得分:0)
我改变了我的索引映射:
...
"file": {
"type" : "nested"
}
...
“file”是一个数组并包含文件信息。
然后,我提出了这个问题:
"aggs": {
"1": {
"nested": {
"path": "file"
},
"aggs": {
"2": {
"terms": {
"field": "file.file_type.raw"
}
}
}
}
}
查询工作正常。