我想查询在ES中编入索引的嵌套文档。
例如,嵌套字段为user
,其中包含两个字段id
和name
。我想查询名称与字段user.name
完全匹配的所有文档。
无法弄清楚如何使用elastic4s DSL。
答案 0 :(得分:3)
这是你在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
(或在弹性4 1.4测试版中,nestedQuery
)来"进入"嵌套范围,您可以使用任何标准查询类型进行搜索。在这里,我只使用简单的termQuery
搜索。
client.execute {
search in "nested/show" query nested("actor").query(termQuery("actor.name" -> "dinklage"))
}