Раньше я думал, что знаю, как использовать запросы bool, но то, что я делал раньше, похоже, больше не работает: некоторые поля могут быть отфильтрованы через запрос bool, а некоторые другие не могут.
(я тестирую на V6, поэтому, может быть, что-то изменилось за это время, но документация , похоже, не предлагает этого)
Запрос
GET /security-center*/_search
{
"query": {
"match_all": {}
}
}
выводит документы, такие как
{
"took" : 5,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 1487073,
"max_score" : 1.0,
"hits" : [
{
"_index" : "security-center-2019.01.24",
"_type" : "doc",
"_id" : "igzyfWgBcCggV6jwR96k",
"_score" : 1.0,
"_source" : {
"vulns_port" : "49666",
"hosts_vulns_scanners_0_loadavg" : "0.0",
"vulns_patchpubdate" : "-1",
"vulns_description" : "This script uses WMI to list the processes running on the remote host\nand listening on TCP / UDP ports.",
"hosts_vulns_completedchecks" : "3046410",
"vulns_family_id" : "20",
"hosts_vulns_repository_description" : "CREATED",
"hosts_vulns_completedips" : "30",
"hosts_vulns_ownergroup_id" : "0",
"hosts_vulns_ownergroup_name" : "Full Access",
"host_dmz" : "False",
(...)
Я сделаю запрос для двух полей выше: vulns_port
и hosts_vulns_ownergroup_name
, точно взяв условия bool из документа выше.
Дело 1: vulns_port
(ОК)
Я хочу получить документы, где vulns_port
равно 49666
:
GET /security-center*/_search
{
"query": {
"bool": {
"must": {
"term": { "vulns_port" : "49666" }
}
}
}
}
Результат:
{
"took" : 83,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 4142,
"max_score" : 5.9115334,
"hits" : [
{
"_index" : "security-center-2019.01.24",
"_type" : "doc",
"_id" : "PKT0fWgBHaYvxmURB5eY",
"_score" : 5.9115334,
"_source" : {
"vulns_port" : "49666",
"hosts_vulns_scanners_0_loadavg" : "0.03",
(...)
Дело 2: hosts_vulns_ownergroup_name
(KO)
Я хочу получить документы, где hosts_vulns_ownergroup_name
Full Access
:
GET /security-center*/_search
{
"query": {
"bool": {
"must": {
"term": { "hosts_vulns_ownergroup_name" : "Full Access" }
}
}
}
}
Результат:
{
"took" : 18,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 0,
"max_score" : null,
"hits" : [ ]
}
}
Где проблема?