弾性検索でクエリをネストするさまざまな方法を理解するのに少し問題があります。ここに私のインデックス付きデータが..だからboolと範囲クエリ、弾性検索の結合が難しい
{
"Underlying" : "Eurodollar",
"Expiration" : "20160315"
},
{
"Underlying" : "Eurodollar",
"Expiration" : "20160415"
},
{
"Underlying" : "Eurodollar",
"Expiration" : "20160515"
}
どのように見えるかの例ですが、私はこの
{
"query" : {
"range" : {
"Expiration" : {
"gte" : "20160315",
"lte" : "20160515"
}
}
}
}
期待通りのようなクエリを実行することができた、私はすべてのエントリを取得します。しかし、私もこのようなエントリを索引付けしているとします。
{
"Underlying" : "Something else",
"Expiration" : "20160415"
}
私は「何か他のもの」の結果が戻ってくるしたくないので、私は今、このような何かをしようとします。
{
"query" : {
"bool" : {
"must" : [
{
"term" : {
"Underlying" : {
"value" : "eurodollar"
}
}
}
]
},
"range" : {
"Expiration" : {
"gte" : "20160315",
"lte" : "20160515"
}
}
}
}
しかし、私は、私ため、エラーの最も関連するテキストは、私は私のBOOL /用語のクエリが動作している知っているこの
Expected field name but got START_OBJECT "bool"
であるように思わエラーに
RequestError(400, u'SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[cCrh939sR7yHdKgawRi6Sw][test-index][0]: SearchParseException[[test-index][0]: query[Expiration:[20160215 TO 20160415]],from[-1],size[-1]: Parse Failure [Failed to parse source [{"query": {"range": {"Expiration": {"gte": "20160215", "lte": "20160415"}}, "bool": {"must": [{"term": {"Underlying": {"value": "eurodollar"}}}]}}}]]]; nested: ElasticsearchParseException[Expected field name but got START_OBJECT "bool"]; }{[cCrh939sR7yHdKgawRi6Sw][test-index][1]: SearchParseException[[test-index][1]: query[Expiration:[20160215 TO 20160415]],from[-1],size[-1]: Parse Failure [Failed to parse source [{"query": {"range": {"Expiration": {"gte": "20160215", "lte": "20160415"}}, "bool": {"must": [{"term": {"Underlying": {"value": "eurodollar"}}}]}}}]]]; nested: ElasticsearchParseException[Expected field name but got START_OBJECT "bool"]; }]', {u'status': 400, u'error': u'SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[cCrh939sR7yHdKgawRi6Sw][test-index][0]: SearchParseException[[test-index][0]: query[Expiration:[20160215 TO 20160415]],from[-1],size[-1]: Parse Failure [Failed to parse source [{"query": {"range": {"Expiration": {"gte": "20160215", "lte": "20160415"}}, "bool": {"must": [{"term": {"Underlying": {"value": "eurodollar"}}}]}}}]]]; nested: ElasticsearchParseException[Expected field name but got START_OBJECT "bool"]; }{[cCrh939sR7yHdKgawRi6Sw][test-index][1]: SearchParseException[[test-index][1]: query[Expiration:[20160215 TO 20160415]],from[-1],size[-1]: Parse Failure [Failed to parse source [{"query": {"range": {"Expiration": {"gte": "20160215", "lte": "20160415"}}, "bool": {"must": [{"term": {"Underlying": {"value": "eurodollar"}}}]}}}]]]; nested: ElasticsearchParseException[Expected field name but got START_OBJECT "bool"]; }]'})
を取得していますこのだけを実行しました
{
"query" : {
"bool" : {
"must" : [
{
"term" : {
"Underlying" : {
"value" : "eurodollar"
}
}
}
]
}
}
}
d期待される結果を得ました。
これは自分の状況を十分に示していると思います。どのように組み合わせるべきかに関する私の推測が間違っているので、これらのクエリを適切に組み合わせるにはどうすればよいですか。
:
と基本的な構造(docから撮影)されます。ありがとうございました!! – Zack
私はより多くの情報を追加しました。それも助けてくれることを願います。 – alpert
非常に感謝します。クエリを構築するための私の方法はまだ非常にblackboxです - ish ...任意の情報が便利です。 – Zack