Elasticsearch-获取给定字段的所有值?

eri*_*ric 42 elasticsearch

我一直在寻找Elasticsearch文档,但我无法找到我正在寻找的内容.

是否可以查询特定字段的所有值?假设我有"文章"并且每篇文章都有作者,我是否可以执行查询以查找所有作者的列表?

谢谢!

sam*_*sam 36

如何获得字段的所有可能值author?

curl -XGET  http://localhost:9200/articles/_search?pretty -d '
{
    "aggs" : {
        "whatever_you_like_here" : {
            "terms" : { "field" : "author", "size":10000 }
        }
    },
    "size" : 0
}'
Run Code Online (Sandbox Code Playgroud)

注意

  • "size":10000获取最多10000个唯一值.默认值为10.

  • "size":0默认情况下,"hits"包含10个文档.我们不需要它们.

  • 默认情况下,存储桶按doc_count递减顺序排序.


参考:桶术语聚合

另请注意,根据此页面,构面已被Elasticsearch 1.0中的聚合所取代,这些聚合是构面的超集.


Mat*_*ewJ 24

我认为你想要的是一个分面搜索.从文档中看一下这个例子:

http://www.elasticsearch.org/guide/reference/api/search/facets/index.html

curl -X POST "http://localhost:9200/articles/_search?pretty=true" -d '
  {
    "query" : { "query_string" : {"query" : "*"} },
    "facets" : {
      "tags" : { "terms" : {"field" : "author"} }
    }
  }
'
Run Code Online (Sandbox Code Playgroud)

看看你是否可以定制这个适合你.

希望这有帮助,马特

  • 只是一个注释(对于像我这样通过谷歌搜索来到这里的人,并没有立即看到这个好的答案有点过时):我刚刚了解到ES 1.4通过聚合弃用了这个方面...所以请参考:http:/ /www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html (12认同)
  • 快速说明一下.搜索所有内容时,请更喜欢matchAll Query. (8认同)
  • @PierpaoloCira除了您链接的文档之外,这里还有一个很好的答案,其中包含最新的示例:http://stackoverflow.com/a/26647301/1666398.Ftr:我非常喜欢[`?search_type = count` param](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html#_returning_only_aggregation_results):) (3认同)