在Elasticsearch中检索热门术语查询

时间:2015-10-29 08:04:28

标签: elasticsearch elasticsearch-query

我正在使用Elasticsearch 1.1.0并尝试在名为text的字段中检索前10个术语

我尝试过以下操作,但它返回了所有文件:

{
  "query": {
    "match_all": {}
  },
  "facets": {
    "text": {
      "terms": {
        "field": "text",
        "size": 10
      }
    }
  }
}

修改

以下是返回结果的示例:

    {
    "took": 2,
    "timed_out": false,
    "_shards": {


"total": 5,
    "successful": 5,
    "failed": 0
    },
    "hits": {
    "total": 2747, 
    "max_score": 1,
    "hits": [
    {
    "_index": "index_name",
    "_type": "type_name",
    "_id": "621637640908050432",
    "_score": 1,
    "_source": {
    "metadata": {
    "result_type": "recent",
    "iso_language_code": "en"
    },
    "in_reply_to_status_id_str": null,
    "in_reply_to_status_id": null,
    "created_at": "Thu Jul 16 11:08:57 +0000 2015",
    .
    .
    . 
    . 

我做错了什么?

感谢。

2 个答案:

答案 0 :(得分:2)

首先,不要使用facets。它们已被弃用。即使您使用旧版Elasticsearch,也请切换到聚合。引用文档:

  

分面搜索是指通过以下方式探索大量数据的方法   显示有关数据的各种分区的摘要以及稍后的摘要   允许将导航范围缩小到特定分区。

     

在Elasticsearch中,facets也是允许的功能的名称   计算这些摘要。 facets已被聚合所取代   在Elasticsearch 1.0中,它是facets的超集。

请改用此查询:

POST /your_index/your_type/_search?search_type=count
{
  "aggs" : {
    "text" : {
      "terms" : {
        "field" : "text",
        "size" : 10
      }
    }
  }
}

这样可以正常使用

答案 1 :(得分:0)

试试这个:

GET /index_name/type_name/_search?search_type=count
{
  "query": {
    "match_all": {}
  },
  "facets": {
    "text": {
      "terms": {
        "field": "text",
        "size": 10
      }
    }
  }
}