2016-11-09 2 views
0

私はelasticsearchからのデータのクエリに関するいくつかの問題があります。私は次のような結果を取得する方法を知っていただきたいと思いelasticsearchから配列の特定の結果を得るには?

[ 
{ 
    name : 'myName', 
    dailyTasks : [ 
     { 
      date : '2016-01-01', 
      task : 'task1' 
     }, 
     { 
      date : '2016-01-02', 
      task : 'task2' 
     }, 
     { 
      date : '2016-01-03', 
      task : 'task3' 
     } 
    ] 
}, 
{ 
    name : 'myName1', 
    dailyTasks : [ 
     { 
      date : '2016-01-01', 
      task : 'task11' 
     }, 
     { 
      date : '2016-01-02', 
      task : 'task12' 
     }, 
     { 
      date : '2016-01-03', 
      task : 'task13' 
     } 
    ] 
} 
] 

:私は、次のような構造を持つデータ

照会したい

[ 
{ 
    name : 'myName', 
    dailyTasks : [ 
     { 
      date : '2016-01-01', 
      task : 'task1' 
     }, 
     { 
      date : '2016-01-02', 
      task : 'task2' 
     } 
    ] 
} 
] 

をありがとうございました。

+0

「dailyTasks」フィールドのマッピングは何ですか? – Val

+0

私が言うことができるのは、 'dailyTasks'は'ネストされていません。 'ですが、 'dailyTasks'を'入れ子 'オブジェクトとして作るために再索引付けしました。しかし、私はまだ投稿した結果を照会することができません。 – barssala

+0

'入れ子にされた'は行く方法です。次に、['inner_hits'](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-inner-hits.html#nested-inner-hits)も必要です。 – Val

答えて

0

クエリにはどのようなロジックがありますか? 名前:myName1と日付:<「2016-01-02」のようですか?

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool": { 
      "should": [ 
      {} 
      ], 
      "must": [ 
      { "term": { 
     "name": "myName" 
    } 
       "range": { 
       "date": { 
        "gte": "2016-01-01", 
        "lte": "2016-01-02" 
       } 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 
+0

しかし、 'date'は' dailyTasks'という名前のリストにあります。私たちはdailyTasksからの参照を心配する必要がありますか? – barssala

+0

あなたがdailyTasks.dateを書くことができることを確かめてください。私は何のテストもしていませんでした。 もう1つの方法は、最初に名前でフィルタリングし、その結果を日付/および/またはフィルタリングして日付の範囲に集約することです。 – HolgT

関連する問題