【发布时间】:2017-04-21 15:11:55
【问题描述】:
在我的 elasticsearch 索引中,我的文档具有这样的嵌套对象属性:
{
"my_index": {
"mappings": {
"my_type": {
"properties": {
"nested_prop": {
"type": "nested",
"properties": {
"subprop1": {
"type": "boolean"
},
"subprop2": {
"type": "keyword"
}
}
}
}
}
}
}
}
我现在可以使用嵌套查询搜索对象,如下所示:
{
"query": {
"nested": {
"path": "nested_prop",
"query": {
"bool": {
"must": [{
"term": {
"nested_prop.subprop1": "true"
}
}, {
"term": {
"nested_prop.subprop2": "SOME_KEY"
}
}]
}
}
}
}
}
到目前为止一切顺利。我正在使用来自查询字符串的非常通用的机制构建我的弹性搜索查询。所以,我希望仍然能够使用“常规”(非嵌套)查询来查询文档,如下所示:
{
"query": {
"term": {
"nested_prop.subprop1": "true"
}
}
}
但是,除非我将其包装到 nested 查询中,否则我只会得到空的结果。
有没有办法使用嵌套对象的简单查询?
【问题讨论】:
-
这个答案可能会有所帮助:stackoverflow.com/questions/35353952/…
-
谢谢,@Val,虽然我不打算使用 Lucene 查询语法,但我从您指出的答案中找到了一个 answer 链接:“需要嵌套字段具有嵌套查询/过滤器的查询,因为可以匹配多个文档,并且您需要能够指定如何将这些多个分数降低到一个分数。"
标签: elasticsearch