我有一个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
}
}
答案 0 :(得分:2)
以下是针对文档中选定字段生成构面的示例 -
curl -XPUT <host>:9200/indices/type/_search?
{
"query": {
"match": {
"store": "Matalan"
}
},
"facets": {
"brand": {
"terms": {
"field": "brand"
}
}
}
}'
答案 1 :(得分:1)
我认为所有术语方面都会得到一个字段的每个术语:
POST /_all/_search
{
"query" : {
"match_all" : { }
},
"facets" : {
"tag" : {
"terms" : {
"field" : "stub",
"all_terms" : true
}
}
}
}
如下面的ES 1.0样式的术语聚合,具有非常高的大小计数可能会返回每个术语及其计数,它不是有效的,也不是肯定会得到它们。
您可以在此处阅读有关聚合/分面的大小和分片大小参数的更多信息:
Elasticsearch Doco 1.0
POST /_all/_search
{
"aggs" : {
"genders" : {
"terms" : {
"field" : "stub",
"size":1000
}
}
},
"size":0
}
另外,有一些faceting插件可以将字段的每个术语作为列表获取,请参见此处: Approx Plugin