ElasticSearch 嵌套查询 - 排除父文档
Posted
技术标签:
【中文标题】ElasticSearch 嵌套查询 - 排除父文档【英文标题】:ElasticSearch Nested Query - exclude parent document 【发布时间】:2018-06-22 02:24:47 【问题描述】:尝试排除其中一个子文档与查询不匹配的***文档。
对于下面的示例,我试图排除其中一个嵌套作业具有current: true
并与company name: Elastic
匹配的所有文档。但由于其中一个嵌套作业文档与current: false
和公司name: Elastic
匹配,因此返回此文档。我正在使用嵌套查询,其中必须匹配公司名称和过滤器,其中 current: false。我怎样才能使下面的文件不被退回?
"name": "john doe",
"jobs": [
"title": "Vice President",
"current": true,
"company":
"name": "Elastic"
,
"title": "CEO",
"current": false,
"company":
"name": "Elastic"
...
【问题讨论】:
【参考方案1】:这个怎么样? 注意,我假设您有一个 .keyword
子字段,它基本上与大写字母完全匹配。如果您有不同的名称,请相应地更改字段名称:
"query":
"bool":
"must_not": [
"nested":
"path": "jobs",
"query":
"bool":
"must": [
"term":
"jobs.current":
"value": "true"
,
"term":
"jobs.company.name.keyword":
"value": "Elastic"
]
]
【讨论】:
以上是关于ElasticSearch 嵌套查询 - 排除父文档的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 findOne 查询 mongodb 并排除数组中的一些嵌套字段