我想知道我是否可以使用ElasticSearch Facets功能来替换理性数据库甚至Sphinx客户端中使用的Group By功能?
如果是这样,除官方文档外,有人可以指出一个好的教程吗?
让我们考虑一个SQL表产品,其中我有以下字段:
我省略了表中的其他字段,因为我不想将它们放入我的ES索引中。
我已使用ElasticSearch索引我的数据库。
产品在索引中不是唯一的。我们可以使用不同价格的相同产品,我希望按价格范围对它们进行分组。
答案 0 :(得分:1)
Facets为您提供特定字段中特定单词的文档编号...
现在让我们假设您有一个名为tweets的索引,类型为tweet,字段为" name" ...
字段的方面查询" name"将是:
curl -XPOST "http://localhost:9200/tweets/tweet/_search?search_type=count" -d'
{
"facets": {
"name": {
"terms": {
"field": "name"
}
}
}
}'
现在您得到的答案如下所示
"hits": {
"total": 3475368,
"max_score": 0,
"hits": []
},
"facets": {
"name": {
"_type": "terms",
"total": 3539206,
"other": 3460406,
"terms": [
{
"term": "brickeyee",
"count": 9205
},
{
"term": "ken_adrian",
"count": 9160
},
{
"term": "rhizo_1",
"count": 9143
},
{
"term": "purpleinopp",
"count": 8747
}
....
....
这称为术语方面,因为这是基于术语的计数...还有其他方面也可以看到here