elasticsearch - Elasticsearch聚合-无法执行对对象的聚合

标签 elasticsearch lucene

我有一个内部对象的映射,如下所示:

{
    "mappings": {
        "_all": {
            "enabled": false
        },
        "properties": {
            "foo": {
                "name": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "address": {
                    "type": "object",
                    "properties": {
                        "address": {
                            "type": "string"
                        },
                        "city": {
                            "type": "string",
                            "index": "not_analyzed"
                        }
                    }
                }
            }
        }
    }
}

当我尝试以下聚合时,它不会返回任何数据:
post data:*/foo/_search?search_type=count
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "unique": {
      "cardinality": {
        "field": "address.city"
      }
    }
  }
}

当我尝试放置字段city或address.city时,聚合返回零,但是如果我放置foo.address.city,则是当我通过elasticsearch得到正确的响应时。这也会影响木瓜的行为

任何想法为什么会这样?我看到有一个mapping refactoring可能会影响这一点。我使用的是Elasticsearch 1.7.1版

要对此进行补充,我可以在搜索查询中使用相对路径,如下所示,它可以正常工作:
"query": {
    "filtered": {
      "filter": {
        "term": {
          "address.city": "london"
        }
      }
    }
  }

最佳答案

似乎是同样的issue
当类型名称和字段名称相同时,可以看到此信息。

关于elasticsearch - Elasticsearch聚合-无法执行对对象的聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32223744/

相关文章:

elasticsearch - 干草堆elasticsearch方面,但忽略此查询的过滤器

ElasticSearch NEST 结合 AND 和 OR 查询

在 lucene.net 中排序

spring - 如何使用spring数据elasticSearch搜索单词的一部分

elasticsearch - 如何在Logstash上定义特定的字段标记

ruby-on-rails - 安装旧版本的 Elasticsearch

java - 如何使用 Datalog 查询接口(interface)公开巨大的语义图(链接数据)

java - 在 MMapDirectory 中找不到段* 文件

azure - 不区分大小写的 Azure 搜索

solr - 如何删除一个月前的文件