条件に一致する子要素を持っている親要素だけを取得したい


#1

  "properties":{
    "title":{
      "type":"string"
    },
    "pages":{
      "properties":{
          "text":{
            "type":"string"
          },
          "number":{
            "type":"integer"
          },
          "version":{
            "type":"integer"
          }
      }
    }
  }
}

上記のような構造のtypeがあったとします。
その際に、全文検索を行った後にfilterで”pages.versionが1かつnumberが30以下のpagesを持っている”みたいな条件を付けたいのですがどのようにすればよいのでしょうか?
DBっぽく言えば、pagesテーブルに条件を満たすカラムが1行以上あるという感じでしょうか。

{
  "query" : {
    "simple_query_string" : {
      "fields": ["_all"],
      "query": "elasticsearch",
      "default_operator": "and"
    }
  },
  "filter": {
    "bool": {
      "must": [
        {
          "term":{"title":"あいうえお"}
        },
        {
        //ここにその条件を追加したいです
        }
      ]
    }
  }
}

よろしくお願いします。

※修正しました。


(Jun Ohtani) #2

Nested typeが向いていると思います。
https://www.elastic.co/guide/en/elasticsearch/guide/master/nested-query.html


#3

こちらの方法で解決することができました。
ありがとうございました。


(system) #4