我无法检查root(_source
)字段是否存在。
问题很简单,我在_source
中有一个对象,也可能有这个字段,ES返回两者的匹配(_source
中存在字段,_source.myobject
中存在字段)< / p>
想象一下如下文档:
{
"_index": "someIndex",
"_type": "someType",
"_id": "someId",
"_score": 1,
"_source": {
"foo": 1,
"myobject": {
"foo": 1,
"bar": 1
}
}
}
在理想情况下,我想在检查bar
是否存在时 NOT 返回此文档。
但我的简单过滤器会返回此文档:
{
"filter": {
"exists": {
"field": "bar"
}
}
}
那么,是否可以通过与访问myobject
的字段("field": "myobject.bar"
)类似的语法来访问只根字段键。
自己测试一下:
POST /test-index/foo
{
"bar": ["1", "2"],
"myobject": {
"baz": ["1", "2"]
}
}
POST /test-index/foo/_search
{
"filter": {
"exists": {
"field": "baz"
}
}
}
上面的查询正在返回文档,我想要一个没有的过滤器。
非常感谢
答案 0 :(得分:0)
此行为似乎在更高版本的ES中得到修复。 1.6.0和1.7.0有这个问题,当试用2.2.0它按预期工作。