Elasticsearch 之 Facet,elasticsearchfacet
尽管官网上强调,facet在以后的版本中将会从elasticsearch中移除,推荐使用aggregations。但在工作上,自己还是使用了facet。在阅读《Mastering Elasticsearch》的时候,看到了对facet的介绍,介绍的非常的实用和易懂,于是就摘译了一部分出来,供需要的参考。
当使用ElasticSearch 刻面(faceting)机制时,需要牢记:刻面(faceting)结果仅在查询(query)结果上计算;如果你在query实体外包含过滤(filter),这样的过滤不会限制刻面统计的文档(document)
来看例子:
首先,使用以下命令往books索引内插入一些文本:
curl -XPUT 'localhost:9200/books/book/1' -d '{
"id":"1", "title":"Test book 1", "category":"book",
"price":29.99
}'
curl -XPUT 'localhost:9200/books/book/2' -d '{
"id":"2", "title":"Test book 2", "category":"book",
"price":39.99
}'
curl -XPUT 'localhost:9200/books/book/3' -d '{
"id":"3", "title":"Test comic 1","category":"comic",
"price":11.99
}'
curl -XPUT 'localhost:9200/books/book/4' -d '{
"id":"4", "title":"Test comic 2","category":"comic",
"price":15.99
}'
让我们来看看当使用查询(query)和过滤(filter)时,刻面(faceting)是如何工作的。我们将会执行一个简单的查询(query)——返回books索引上的所有文档。同样,我们会包含一个过滤来将查询结果限制仅仅属于book分类(category),以及包含一个针对price字段的范围切面,来查看有多少文档的价格低于30和有多少是高于30.整个查询如下:
{
"query": {
"match_all": {}
},
"filter": {
"term": {
"category": "book"
}
},
"facets": {
"price": {
"range": {
"field": "price",
"ranges": [
{
"to": 30
},
{
"from": 30
}
]
}
}
}
}
执行后,我们将得到以下结果:
{
…
"hits":{
"total":2,
"max_score": 1.0,
"hits": [
{
"_index": "books",
"_type": "book",
"_id": "1",
"_score": 1.0,
"_source": {
"id": "1",
"title": "Test book 1",
"category": "book",
"price": 29.99
}
},
{
"_index": "books",
"_type": "book",
"_id": "2",
"_score": 1.0,
"_source": {
"id": "2",
"title": "Test book 2",
"category": "book",
"price": 39.99
}
}
]
},
"facets": {
"price": {
"_type": "range",
"ranges": [
{
"to": 30.0,
"count": 3,
 
您可能想查找下面的文章:
- Elasticsearch 之 Facet,elasticsearchfacet
- 使用 ElasticSearch + LogStash + Kibana 来可视化网络流量,kibanaelasticsearch
- Elasticsearch之scroll,elasticsearch
- elasticsearch JAVA客户端操作---搜索的过滤、分组高亮,elasticsearchjava
- Elasticsearch之Nested Query,elasticsearch
- Elasticsearch之Nested Aggregation,elasticsearch
- Elasticsearch之Nested Object Mapping,elasticsearch
- Elasticsearch之Nested Sorting,elasticsearch
- Elasticsearch之Nested(嵌套)系列,elasticsearch
- Elasticsearch的简单使用案例

