【发布时间】:2020-04-21 13:21:57
【问题描述】:
我有多个公司类型的记录,这是一个保存在弹性搜索中的嵌套 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”的公司记录数。
我尝试使用以下查询,但它不起作用。
获取索引/_搜索
{
"query": {
"bool" : {
"must_not" : [{
"match" : {
"company.manager.name" : "abc"
}
}]
}
}
}
感谢任何帮助。谢谢!
【问题讨论】:
-
嘿乔治,欢迎来到 SO!当您说您的查询不起作用时,您的意思是您得到 0 个结果、一条错误消息或其他什么?
-
我提供了答案,假设您已经定义了正确的映射,但是对于一个好的弹性搜索问题,您应该提供索引定义(设置和映射)、您对文档、搜索查询和预期结果进行采样。请仔细阅读我的回答,如果它不起作用,请提供所有这些信息,以便我提供进一步的帮助
-
@Nate 我将所有记录作为响应返回。
-
嗯,我认为我无法重现您的索引(我为公司创建了索引,不推荐使用 bc 映射类型),但您的查询在这种情况下有效。旁注,您可能需要使用
_count/API eventually -
@George 很长时间以来,您都没有接受并支持我的答案,如果您的问题得到解决,如果您能接受并支持答案,那就太好了
标签: elasticsearch