私のprevious questionでは、query_string
というクエリでfields
に紹介されました。また、ドキュメントのネストされたフィールドを検索するのに役立ちます。Elasticsearchの同じクエリで `gt`と` fields`を使用する方法
{
"query": {
"query_string": {
"fields": ["*.id","id"],
"query": "2"
}
}
}
しかし、それはマッチングのためだけに機能しますが、何か比較したいのですが?いくつかの読み取りとテストの後、range
のようなクエリはfields
をサポートしていないようです。 range
というクエリを実行する方法はありますか?ドキュメント階層のどこにでも散らばることができるフィールド上の日付ですなわち、次の文書考慮
:
{
"id" : 1,
"Comment" : "Comment 1",
"date" : "2016-08-16T15:22:36.967489",
"Reply" : [ {
"id" : 2,
"Comment" : "Inner comment",
"date" : "2016-08-16T16:22:36.967489"
} ]
}
は、明示的にReply.date
にアドレスを与えることなく、ためにネストされたフィールドを、与えられた文書と一致する(date > '2016-08-16T16:00:00.000000'
のような)date
フィールド上で検索クエリがありますか?この(私は次のクエリが間違っている知っている)ような何か:
{
"query": {
"range" : {
"date" : {
"gte" : "2016-08-16T16:00:00.000000",
},
"fields": ["date", "*.date"]
}
}
}
あなたが説明/ Wにドキュメントを参照してください可能性があるため、上記のクエリは、あなたの文書を返します。 '\ *'がやっている帽子?そして私は以前のように 'fields'を使うべきですか? – Mehran
「[クエリ文字列クエリの構文]」(https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-query.html#_field_names)ドキュメントの[フィールド名前 "セクション。 'fields'を使う必要はありません。ワイルドカードは不要です。 '\ * date'は' date'で終わるフィールド(ネストされたフィールドを含む)を意味します。バックスラッシュがあるのは、クエリ文字列の構文で予約文字であるワイルドカード '*'をエスケープする必要があるためです。 – Val