使用嵌套对象的布尔运算符时遇到一些麻烦。这是我的映射:
"IP": {
"properties": {
"ip": {
"type": "ip"
}
},
"type": "nested"
}
我想获取恰好包含两个指定ip甚至更多的文档。
假设我的文档具有以下ips:
DOC 1
192.168.1.0
192.168.0.1
10.0.0.9
DOC 2
192.168.0.1
我想通过使用此过滤器进行搜索来仅检索DOC 1:
"bool": {
"must": {
"terms": {
"IP.ip": [
"192.168.0.1",
"10.0.0.9"
]
}
}
}
问题在于,同时检索了DOC 1和DOC2。
你可以使用"execution":"and"
你的条件过滤器是这样的:
{
"filter": {
"bool": {
"must": [
{
"terms": {
"ip": [
"192.168.0.1",
"10.0.0.9"
],
"execution": "and"
}
}
]
}
}
}
这是我用来测试的一些代码:
http://sense.qbox.io/gist/d6b5f4e4c0d2977a04b1795f4bbb0503f6365dfe
编辑: 嵌套的版本(我误解了问题)。
假设您的索引是按照我设置我的测试对象的方式设置的,那么该查询应该为您提供所需的信息(请参见下面的代码)。列表中需要包含两个nested
子句,must
因为我们要查找的文档包含两个不同的嵌套文档,每个嵌套IP。
POST /test_index/_search
{
"filter": {
"bool": {
"must": [
{
"nested": {
"path": "ips",
"filter": {
"term": {
"ip": "192.168.0.1"
}
}
}
},
{
"nested": {
"path": "ips",
"filter": {
"term": {
"ip": "10.0.0.9"
}
}
}
}
]
}
}
}
这是我用来设置的代码:
http://sense.qbox.io/gist/cd3a0ec61cb1348d5cc2bd1ef444f4898f6d8e57
问题内容: 我有这样的角度嵌套对象。有没有办法为嵌套属性过滤它 我只显示父元素,但想按两个元素进行过滤,例如: 问题答案: 是的,如果我正确理解您的示例,则可以。 根据集合的大小,计算迭代所用的集合可能会更好,这样过滤器就不会随着模型的更改而不断地进行操作。 http://jsfiddle.net/suCWn/ 基本上,如果我理解正确,您会执行以下操作:
问题内容: 我正在使用Nest Elastic并使用Head插件为布尔搜索构建查询,我正在合并多个查询 有关数据库结构和弹性映射的注释 数据库中的每个文档都链接到特定的profileId,后者又具有多个属性 每个文档都有与其关联的多个属性值 在此查询中,我要获取具有特定配置文件和属性值> 30的所有文档,同时要记住,此属性应仅具有ID 2。 SQL查询: 从文档d内部联接attributeValu
我有一个Employee类,它以PersonalDetails类对象作为成员 类如下所示
我有一个映射: 我使用三个条件进行筛选: “日志类型”是“爬虫” “2020-05-23”上的“创建数据” “resp”的大小=0 我试图过滤与查询: {"查询":{"bool":{"必须":[{"术语":{"_logType":{"value":"爬虫"}}},{"范围":{"_createdAt":{"gte":"2020-05-23","lte":"2020-05-23","time_zon
设备类型.java DeviceTelemetry.java (枚举类) 我想获取所有DeviceType Id,它们的DeviceTelem计名称以“System”(String)开头。 我做了这样的事情:— 谁能告诉我如何从中获取DeviceType Id?
我在ES中有两个问题。对于同一组文档,两者的周转时间都不同。两者在概念上都在做同样的事情。我没有什么疑问 1-这两者之间有什么区别?2-哪个更好使用?3-如果两者相同,为什么表现不同? 映射: 更新1: 我在同一组数据上尝试了bool/必须查询和bool/过滤器查询,但我发现了奇怪的行为 1-bool/必须查询能够搜索所需的文档 2-虽然bool/filter无法搜索文档。如果我删除第二个字段条件