Упругий поиск, вложенный фильтр
Вот структура документа, возвращенная API Elastic Search:
{
"process_name":"process01",
"beat":
{
"hostname":"12345","name":"blablabla"
},
}
Фильтрация по process_name была простой, но как я могу фильтровать по host_name, который вложен в ритм?
- Неудачная попытка 1
{
"size":10000,
"query" : {
"bool" : {
"should": [
{ "match" : { "process_name" : "process01" } },
{ "match" : { "process_name" : "process02" } }
],
"must": [
{ "match" : { beat: { "hostname":"12345" } } }
]
}
}
}
сообщение об ошибке 1:
(не удалось десериализовать объект type=class com.logshero.api.SearchApiRequest):
- Неудачная попытка 2
{
"size":10000,
"query" : {
"bool" : {
"should": [
{ "match" : { "process_name" : "process01" } },
{ "match" : { "process_name" : "process02" } }
],
"must": [
{ "match" : { "hostname":"12345" } }
]
}
}
}
сообщение об ошибке 2:
{ "хиты":{"всего":0,"max_score": нулевая, "хиты":[]}}
1 ответ
Вы можете использовать следующий запрос. Вы также должны убедиться, что ритм в ваших отображениях определен как вложенный тип.
{
"size": 10000,
"query": {
"bool": {
"should": [{
"match": {
"process_name": "process01"
}
}, {
"match": {
"process_name": "process02"
}
}],
"must": [{
"match": {
"beat.hostname": "12345"
}
}]
}
}
}
Спасибо