elasticsearch - 使用Elasticsearch在返回的文档中按字段进行存储

标签 elasticsearch

我们的索引文档没有完全固定的架构,也就是说,不是每个文档中都有每个字段。有没有一种方法可以基于一组文档中存在的字段(即响应查询)创建存储桶,并计算包含这些字段的文档数量?例如,我刚刚组成的这些文档包含查询的结果:

{"name":"Bob","field1":"value","field2":"value2","field3":"value3"}
{"name":"Sue","field2":"value4","field3":"value5"}
{"name":"Ali","field1":"value6","field2":"value7"}
{"name":"Joe","field3":"value8"}

这是我要提取的信息(不是格式):

  name: 4
field1: 2
field2: 3
field3: 3

有什么方法可以汇总和计算以获得这些结果?

最佳答案

是的,我想您可以这样做:

GET /some_index/some_type/_search?search_type=count
{
  "aggs": {
    "name_bucket": {
      "filter" : { "exists" : { "field" : "name" } }
    },
    "field1_bucket": {
      "filter" : { "exists" : { "field" : "field1" } }
    },
    "field2_bucket": {
      "filter" : { "exists" : { "field" : "field2" } }
    },
    "field3_bucket": {
      "filter" : { "exists" : { "field" : "field3" } }
    }
  }
}

你会得到这样的东西:
   "aggregations": {
      "field3_bucket": {
         "doc_count": 3
      },
      "field1_bucket": {
         "doc_count": 2
      },
      "field2_bucket": {
         "doc_count": 3
      },
      "name_bucket": {
         "doc_count": 4
      }
   }

关于elasticsearch - 使用Elasticsearch在返回的文档中按字段进行存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26043890/

相关文章:

regex - 我只希望Regex仅搜索拼写错误-如何排除正确的拼写?

elasticsearch - elasticsearch查询不支持query_string?

java - elasticsearch使用resthighlevel客户端生成查询

templates - 如何在所有现有索引上更新dynamic_templates?

elasticsearch - Elasticsearch查找日期使用范围查询相交和内部

amazon-web-services - 静态加密 : AWS Elasticsearch

json - Elasticsearch:如何动态存储所有json对象

elasticsearch - Elasticsearch 作为grafana数据源

scala - 嵌入式ES实例中的完成搜索

elasticsearch - 在Elasticsearch中以查询开始(不带短语)