Json 弹性搜索嵌套过滤器
以下是弹性搜索API返回的文档结构:Json 弹性搜索嵌套过滤器,json,elasticsearch,nested,logz.io,Json,elasticsearch,Nested,Logz.io,以下是弹性搜索API返回的文档结构: { “进程名称”:“进程01”, “节拍”: { “主机名”:“12345”,“名称”:“blabla” }, } 按进程名称进行过滤很容易,但如何按嵌套在beat中的主机名称进行过滤 尝试1失败 { “大小”:10000, “查询”:{ “布尔”:{ “应该”:[ {“匹配”:{“进程名称”:“进程01”}, {“匹配”:{“进程名称”:“进程02”} ], “必须”:[ {“匹配”:{节拍:{“主机名”:“12345”} ] } } } 错误消息1:
{
“进程名称”:“进程01”,
“节拍”:
{
“主机名”:“12345”,“名称”:“blabla”
},
}
按进程名称进行过滤很容易,但如何按嵌套在beat中的主机名称进行过滤
- 尝试1失败
{
“大小”:10000,
“查询”:{
“布尔”:{
“应该”:[
{“匹配”:{“进程名称”:“进程01”},
{“匹配”:{“进程名称”:“进程02”}
],
“必须”:[
{“匹配”:{节拍:{“主机名”:“12345”}
]
}
}
}
错误消息1:
(未能反序列化对象类型=class com.logshero.api.SearchApirection):
- 尝试2失败
{
“大小”:10000,
“查询”:{
“布尔”:{
“应该”:[
{“匹配”:{“进程名称”:“进程01”},
{“匹配”:{“进程名称”:“进程02”}
],
“必须”:[
{“匹配”:{“主机名”:“12345”}
]
}
}
}
错误消息2:
{“点击次数”:{“总计”:0,“最大分数”:null,“点击次数”:[]}
您可以使用以下查询。您还必须确保映射中的beat定义为嵌套类型
{
"size": 10000,
"query": {
"bool": {
"should": [{
"match": {
"process_name": "process01"
}
}, {
"match": {
"process_name": "process02"
}
}],
"must": [{
"match": {
"beat.hostname": "12345"
}
}]
}
}
}
谢谢