Фильтровать по запросу терминов Elasticsearch - PullRequest
0 голосов
/ 19 марта 2020

Я ищу последний раз, когда какой-либо пользователь вошел в систему.

У меня есть два типа аутентификации (Admin, Client), и я пытаюсь выполнить запрос, чтобы найти событие: Аутентификация прошла успешно Где authentication_type: Client

Ближайшее, что я получил, это:

params='{ "query":{"terms":{"event_type":["authentication_succeeded"]}}}'
data=$(curl -XGET "localhost:9200/logstash-*/_search?scroll=10m&size=500&pretty" -H 'Content-Type: application/json' -d"${params}")

После многих вариантов и альтернативных типов запросов, но я не смог успешно добавить фильтр для '{"authentication_type": "Client"} «

1 Ответ

1 голос
/ 19 марта 2020

Вам необходимо определить свои authentication_type и event_type в качестве ключевого слова, а затем использовать фильтры терминов для этих полей в поисковом запросе.

Вы можете прочитать с помощью примера фильтра с несколькими терминами в этой официальной ссылке ES .

Ниже приведен пошаговый пример, который использует ваши данные для отображения ожидаемых результатов поиска.

Отображение индекса

{
  "mappings": {
    "properties": {
      "authentication_type": {
        "type": "keyword"
      },
      "event_type" :{
        "type" : "keyword"
      }
    }
  }
}

Примеры документов индекса

{
   "authentication_type" : "Client",
   "event_type" : "authentication_succeeded"
}

{
   "authentication_type" : "Client",
   "event_type" : "authentication_failed"
}

{
   "authentication_type" : "Admin",
   "event_type" : "authentication_succeeded"
}

{
   "authentication_type" : "Admin",
   "event_type" : "authentication_failed"
}

Поисковый запрос

{
    "query": {
        "bool": {
            "filter": [
                {
                    "term": {
                        "event_type": "authentication_succeeded"
                    }
                },
                {
                    "term": {
                        "authentication_type": "Client"
                    }
                }
            ]
        }
    }
}

Результат поиска

"hits": [
         {
            "_index": "so_60750542",
            "_type": "_doc",
            "_id": "1",
            "_score": 0.0,
            "_source": {
               "authentication_type": "Client",
               "event_type": "authentication_succeeded"
            }
         }
      ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...