了解独特的条款

时间:2016-08-24 03:41:09

标签: elasticsearch

在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
                  }
              }
          }
      }
}

2 个答案:

答案 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"
                }
            }
        }
    }
}

查询工作正常。