【发布时间】:2016-11-21 07:19:13
【问题描述】:
我有一个映射,其中我有一个嵌套类型,嵌套对象通常包含多个对象,因此如果检索到整个主对象,它就是一个数组。使用搜索请求的“字段”部分,我可以获得主对象的字段,以及来自嵌套对象的字段(作为数组,除非只有一个),但显然不是整个嵌套对象数组。除了获取整个对象(省略字段)之外,还有其他方法吗?
例如:
{
"properties: {
"f1": {"type": "string"},
"f2": {"type": "string"},
...
"n": {
"type": "nested",
"properties": {
"n1": {"type": "string"},
"n2": {"type": "string"},
...
}
}
}
}
通常,n 将是一个数组,但可能不会为所有条目设置 n1
此查询有效,但由于数组中的某些对象中缺少 n1,因此没有帮助:
{"query": {"nested": {"path": "n", "query": {"match": {"n.n1","something"}}}},
"fields": ["f1", "n.n1"]}
这不是(“字段 [n] 不是叶字段”),而是我真正想要的:
{"query": {"nested": {"path": "n", "query": {"match": {"n.n1","something"}}}},
"fields": ["f1", "n"]}
但这确实会以检索整个对象为代价,包括(数组)n:
{"query": {"nested": {"path": "n", "query": {"match": {"n.n1","something"}}}}}
当 n 之一中的一个字段匹配时,是否有一些我缺少的查询语法会给我整个数组 n(以及主对象中的至少一个字符串字段),而没有得到整个匹配对象?
【问题讨论】:
标签: elasticsearch