3

ES でインデックス付けされたネストされたドキュメントをクエリしたいと考えています。

たとえば、ネストされたフィールドはと の 2 つのフィールドをuser含みます。name が field と完全に一致するすべてのドキュメントを照会したいと考えています。idnameuser.name

そのためにelastic4s DSLを使用する方法がわかりません。

4

2 に答える 2

4

これは、elastic4s でネストされたクエリを実行する方法です。

まず、ネストされた型を持つようにインデックスを設定します。

  client.execute {
    create index "nested" mappings {
      "show" as {
        "actor" typed NestedType
      }
    }
  }

次に、いくつかのサンプルデータを使用して

  client.execute(
    index into "nested/show" fields(
      "name" -> "game of thrones",
      "actor" -> Seq(
        Map("name" -> "peter dinklage", "birthplace" -> "Morristown"),
        Map("name" -> "pedro pascal", "birthplace" -> "Santiago")
      )
    )
  )

次にキー部分。検索するには、nested(elastic4s 1.4 ベータ版ではnestedQuery) を使用して、ネストされたスコープに「ドロップイン」し、標準のクエリ タイプを使用して検索できます。ここでは単純なtermQuery検索を使用しています。

client.execute {
  search in "nested/show" query nested("actor").query(termQuery("actor.name" -> "dinklage"))
}
于 2014-10-31T23:37:30.593 に答える