用于查找不匹配记录的ElasticSearch查询



我有多个company类型的记录,这是一个在弹性搜索中保存的嵌套json文档。公司有以下结构,

{"companies" : [{
"company" : {
"manager" : [{
"name" : "abc",
"age" : "40"
}],
"employee_count" : "2300",
"profit" : "10"
},
"company" : {
"manager" : [{
"name" : "def",
"age" : "41"
}],
"employee_count" : "2200",
"profit" : "10"
},
"company" : {
"manager" : [{
"name" : "ghi",
"age" : "42"
}],
"employee_count" : "2100",
"profit" : "10"
}
}]
}

我需要查找company.manager.name的NONE为"abc"的公司记录的计数。

我尝试使用以下查询,但它不起作用。

获取索引/搜索(_S(

{
"query": {
"bool" : {
"must_not" : [{
"match" : {
"company.manager.name" : "abc"
}
}]
}
}
}

感谢您的帮助。非常感谢。

由于您使用nested映射,在查询数据时需要提及nested路径,请参阅此官方文档以获取示例嵌套查询

您的查询应该如下所示,其中包含nested路径

{
"query": {
"nested": {
"path": "companies",  --> note this
"query": {
"bool": {
"must_not": [
{
"match": {
"company.manager.name": "abc"
}
}
]
}
}
}
}
}

如果需要计算元素的数量,则应首先根据该条件聚合数据。看看Elastic官方文档的这一部分。

最新更新