我可以使用ElasticSearch Facets作为GROUP BY的等价物吗?

时间:2014-04-15 14:00:11

标签: elasticsearch facets

我想知道我是否可以使用ElasticSearch Facets功能来替换理性数据库甚至Sphinx客户端中使用的Group By功能?

如果是这样,除官方文档外,有人可以指出一个好的教程吗?

编辑:

让我们考虑一个SQL表产品,其中我有以下字段:

  • ID
  • 标题
  • 描述

我省略了表中的其他字段,因为我不想将它们放入我的ES索引中。

我已使用ElasticSearch索引我的数据库。

产品在索引中不是唯一的。我们可以使用不同价格的相同产品,我希望按价格范围对它们进行分组。

1 个答案:

答案 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