栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Elasticsearch-过滤哪里(嵌套数组之一)和(所有嵌套数组)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Elasticsearch-过滤哪里(嵌套数组之一)和(所有嵌套数组)

嵌套数组之一

具有 一个 符合某些条件的嵌套数组 之一
非常简单。甲嵌套滤波器的计算结果为匹配/真,如果任何嵌套对象的阵列的匹配指定内的过滤器。例如,给定一个

outer
对象数组,其中那些对象中的一个对象具有一个
match
值为
"matching"
的字段,则将以下内容视为正确。

"nested": {   "path": "outer",   "filter": {       "term" : { "match" : "matching" }    }}

如果 其中一个 嵌套

outer
对象具有一个名为
match
value 的字段,则以上内容将被视为true / matching
"matching"

所有嵌套数组

仅当数组匹配的 所有
嵌套对象更有趣时,才具有嵌套过滤器。实际上,这是不可能的。但是考虑到如果只有一个嵌套对象与一个过滤器匹配,则认为是匹配的,我们可以颠倒逻辑并说“如果
没有 一个嵌套对象
匹配”以达到我们所需要的。例如,给定一个嵌套

outer.inner
对象数组,其中所有这些对象都具有一个
match
值为
"matching"
的字段,则以下内容将被视为true。

"not" : {   "nested": {      "path": "outer.inner",      "filter": {          "not" : {   "term" : { "match" : "matching" }}      }   }}

上述将被视为真/匹配,因为 没有 嵌套的

outer.inner
对象
(双阴性)有一个称为字段
match
具有值
"matching"
。当然,这与 所有
inner
具有
match
value
字段的嵌套对象相同
"matching"

缺少任何嵌套对象

使用传统的缺失过滤器无法检查是否缺少包含嵌套对象的字段。这是因为,嵌套的对象实际上并没有
所有的文件,将它们存储在别处。因此,丢失的过滤器将始终被视为正确。但是,您可以做的是检查

match_all
过滤器是否不返回任何结果。

"not": {   "nested": {      "path": "outer",      "filter": {          "match_all": {}       }    } }

如果未

match_all
找到结果,则认为是正确/匹配。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/409473.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号