4

Elasticsearch (バージョン 2.0) に問題があります。大量のドキュメントから重要な用語を取得しようとしていますが、常に何も返されません。

これが私のインデックスのスキーマです:

{
    "documents" : {
      "warmers" : {},
      "mappings" : {
         "document" : {
            "properties" : {
               "text" : {
                  "index" : "not_analyzed",
                  "type" : "string"
               },
               "entities": {
                   "properties": {
                       "text": {
                           "index": "not_analyzed",
                           "type": "string"
                       }
                   }
               }
            }
         }
      },
      "settings" : {
         "index" : {
            "creation_date" : "1447410095617",
            "uuid" : "h2m2J9sJQaCpxvGDI591zg",
            "number_of_replicas" : "1",
            "version" : {
               "created" : "2000099"
            },
            "number_of_shards" : "5"
         }
      },
      "aliases" : {}
   }
}

したがって、これは、分析されない field を含む単純なインデックスと、分析されない単一の field: を持つ辞書を含むtext配列です。entitiestext

私がやりたいことは、いくつかのドキュメントを照合し、関連するエンティティから最も重要な用語を抽出することです。そのために、ワイルドカードを使用してから集計を使用します。

これが私が送信しているリクエストですcurl:

curl -XGET 'http://localhost:9200/documents/_search' -d '{
        "query": {
            "bool": {
               "must": {"wildcard": {"text": "*test*"}}
            }
        },
        "aggregations" : {
                "my_significant_terms" : {
                        "significant_terms" : { "field" : "entities.text" }
                }
        }
}'

残念ながら、Elasticsearch が一部のドキュメントにヒットしたとしても、重要な用語の集計のバケットは常に空です。

analyzedまたの代わりに入れようとしましたnot_analyzedが、同じ空の結果が得られました。

まず、このようにすることは適切ですか?

私はElasticsearchの初心者なので、重要な用語の集計がどのように機能するか説明してもらえますか?

最後に、関連性がある場合、クエリが機能しないのはなぜですか?

編集:Elasticsearch のドキュメントで、重要な用語の集約が有効になるには一定量のデータが必要であることがわかりました。インデックスには 163 個のドキュメントがあります。それはありますか?

4

2 に答える 2

3

それが役立つかどうかはわかりません。指定してみる

"min_doc_count": 1

于 2016-12-21T15:27:10.003 に答える
0

重要な用語の集約を有効にするには、一定量のデータが必要であり、インデックスには 163 個のドキュメントしかありません。それはありますか?

ドキュメントの数が少ない場合は、5 個ではなく 1 個のシャードを使用すると効果的です。

于 2016-06-08T15:49:08.650 に答える