2

私は Elasticsearch 1.1.0 を使用しており、フィールドの上位 10 語を取得しようとしています。text

次のことを試しましたが、代わりにすべてのドキュメントが返されました。

{
  "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",
    .
    .
    . 
    . 

私は何を間違っていますか?

ありがとう。

4

2 に答える 2

2

まず、使わないfacets。それらは非推奨です。古いバージョンの Elasticsearch を使用している場合でも、集計に切り替えます。ドキュメントの引用:

ファセット検索とは、データのさまざまなパーティションに関する概要を表示し、後でナビゲーションを特定のパーティションに絞り込むことによって、大量のデータを探索する方法を指します。

Elasticsearch では、ファセットは、これらの集計を計算できる機能の名前でもあります。ファセットは、ファセットのスーパーセットである Elasticsearch 1.0 の集約に置き換えられました。

代わりに次のクエリを使用してください。

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

これはうまくいきます

于 2015-10-29T08:31:12.757 に答える