Wpis z mikrobloga

mam do przefiltrowania logi z apache, chciałbym wyszukać dane tylko dla konkretnych pul adresowych:

{
"query": {
"wildcard": {
"clientip": {
"value": "10.10.10*"
}
}
}
}

i fajnie, filtruje tylko logi dla adresów z puli 10.10.10.*, ale chciałbym, żeby to query zwróciło również dla 10.10.20.* oraz 10.10.30.*.

Jak to wrzucić w ten jeden query? Bo jak robię:
"value": ["10.10.10*", "10.10.20*", "10.10.30*"]

to niestety sie wysypuje. Adresy IP są u mnie w formie stringów.

any ideas?

#kibana #elasticsearch #sysadmin #devops
  • 5
  • Odpowiedz
value:"10.10.10.*" || value:"10.10.20.*" || value:"10.10.30.*"


@paranoiddd: zwraca mi niestety "Bad string"

na pewno nie dajesz value w cudzysłów? Albo jakieś przecinki między?
Mam starego elastica i to też może być problem w sumie
  • Odpowiedz
@carryON_: a może OR zamiast ||

Przepraszam ale obecnie nawet nie mam ELKa żadnego nawet pod ręką i trochę czasu mineło ale jestem pewien że tak działało. Patrząc na https://discuss.elastic.co/t/or-filter-with-kibana-5-0/65699 myślę że to właśnie ma być OR a nie jakieś tam patyczki xD
edit: cały czas mam na myśli Kibanę - do gołego elastica były zapytania term i bool które mogły robić match na wiele różnych wartości, ale ja zawsze wyszukiwałem
  • Odpowiedz
@paranoiddd:

{

"query": {
"wildcard": {
"clientip": {
"value":"10.10.10." OR "value":"10.10.20." OR "value":"10.10.30.*"
}
}
}
}

niestety zwraca, że oczekuje przecinka zamiast 'O', czyli OR też mu się niestety nie podoba :D walczę dalej
  • Odpowiedz