elasticsearch,faceted-search,Lucene,elasticsearch,Faceted Search" /> elasticsearch,faceted-search,Lucene,elasticsearch,Faceted Search" />

Lucene ElasticSearch方面:我如何做到这一点?

Lucene ElasticSearch方面:我如何做到这一点?,lucene,elasticsearch,faceted-search,Lucene,elasticsearch,Faceted Search,我有一个ElasticSearch索引,它包含了数百万种产品和一千多个品牌 我必须使用什么查询才能获得索引中所有品牌的列表 产品输入示例: { _index: main _type: one _id: LA37dcdc7D70QygoV4KjfRU0hqUDhPs= _version: 4 _score: 1 _source: { pid: S2dcdcd528950_C243 mid: 6540 u

我有一个ElasticSearch索引,它包含了数百万种产品和一千多个品牌

我必须使用什么查询才能获得索引中所有品牌的列表

产品输入示例:

{
    _index: main
    _type: one
    _id: LA37dcdc7D70QygoV4KjfRU0hqUDhPs=
    _version: 4
    _score: 1
    _source: {
        pid: S2dcdcd528950_C243
        mid: 6540
        url: http://being.successfultogether.co.uk/
        price: 4
        currency: GBP
        brand: Reebok
        store: Matalan
    }

}

以下是根据文档中的选定字段生成方面的示例-

curl -XPUT <host>:9200/indices/type/_search?
{
  "query": {
    "match": {
      "store": "Matalan"
    }
  },
  "facets": {
    "brand": {
      "terms": {
        "field": "brand"
      }
    }
  }
}'
curl-XPUT:9200/索引/类型/\u搜索?
{
“查询”:{
“匹配”:{
“商店”:“Matalan”
}
},
“方面”:{
“品牌”:{
“条款”:{
“字段”:“品牌”
}
}
}
}'

我认为“所有术语”方面将获得字段的每个术语:

POST /_all/_search
{
    "query" : {
        "match_all" : {  }
    },
    "facets" : {
        "tag" : {
            "terms" : {
                "field" : "stub",
                "all_terms" : true
            }
        }
    }
}
术语聚合,如下面的ES 1.0样式所示,具有非常高的大小计数,可能会返回每个术语及其计数,这不是有效的,也不能肯定会得到所有术语

您可以在此处阅读有关聚合/分面的大小和分片大小参数的更多信息:

此外,还有刻面插件,可以将字段的每个术语作为列表获取,请参见此处:

POST /_all/_search
{
    "aggs" : {
        "genders" : {
            "terms" : { 
                "field" : "stub", 
                "size":1000
            }
        }
    },
    "size":0
}