ES 6.1、Python 3、elasticsearch-dsl を使用して、このマッピングに関するドキュメントを入手しました。
"mappings": {
"doc": {
"properties": {
"id": {"type": "text"},
"prop_a": {"type": "text"},
"prop_b": {
"type": "nested",
"include_in_root": "true",
"properties": {
"title": {"type": "text"},
"prop_bx": {
"type": "nested",
"properties": {
"name": {"type": "text"}
"descr": {"type": "text"}
}
}
例えば:
{
"id": "abc123",
"prop_a": "foo",
"prop_b": {
"title": "some title",
"prop_bx": {
"name": "some name"
"descr": "lorem ipsum ipso facto"
}
}}
そして、次のようにレベル 2 (prop_b) プロパティ 'title' を正常にクエリできます。
s1=Search().using(client).query('nested',
path='prop_b',
query=Q('match', prop_b__title='some title'))
次のレベル (prop_bx) に到達するために多くの方法を試しましたが、私のベストショットはこれですが、「400 クエリの作成に失敗しました」というメッセージが表示されます。
s2=Search().using(client).query('nested',
path='prop_b',
query=Q('nested',path='prop_b__propbx'),
query=Q('match', prop_b__propbx__name='some name'))
ドキュメントで答えや手がかりさえ見つけられません。これを標準のより詳細なクエリ形式で記述し、.from_dict() メソッドで変換できますが、なぜわざわざelasticsearch-dsl に変換するのでしょうか?
手がかり?ありがとう。