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
配列です。entities
text
私がやりたいことは、いくつかのドキュメントを照合し、関連するエンティティから最も重要な用語を抽出することです。そのために、ワイルドカードを使用してから集計を使用します。
これが私が送信しているリクエストです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 個のドキュメントがあります。それはありますか?