Расширенные запросы кибаны /asticsearch devtools - PullRequest
0 голосов
/ 21 апреля 2020

Я запрашиваю свой индекс следующим образом:

GET INDEX/_count?q=KEY:VALUE

Я хочу получить данные в списке значений, поэтому я запускаю их несколько раз:

GET INDEX/_count?q=KEY:VALUE0
GET INDEX/_count?q=KEY:VALUE1
GET INDEX/_count?q=KEY:VALUE2

Кроме того, я хочу проверить, существует ли ключ. Эти параметры доступны в окне «Обнаружение», но здесь я не знаю, как получить к ним доступ ...

Что мне в итоге нужно: запросить определенный c index [I] и считать (и, если возможно, получить расширенную статистику, такую ​​как размер общего количества найденных документов) для всех документов с указанным c ключом [K] или со значением из списка значений (и, если возможно, сделать это с помощью регулярного выражения). В дополнение к этому, я хочу, чтобы поиск / количество было между указанными c датами. Я знаю, как это сделать в окне Discover, но у Discover есть 2 проблемы:

  1. Дает фактический do c (слишком тяжелый, мне нужен только размер и количество)
  2. Включает GUI

Подводя итог, у меня есть несколько трудностей:

  1. Как добавить размер к счету DevToools
  2. Как считать / поиск до месяца после
  3. Как определить, существует ли ключ (например, GET I/_count?K:exists?)
  4. Как определить, является ли значение одним из списка допустимых значений (например, GET I/_count?K=x || K=y || K2=z
  5. Как описать значение в регулярном выражении (например, GET I/_count?K=abc*)
  6. После подсчета / поиска, как удалить упомянутые документы (Просто замените GET на DELETE?)

1 Ответ

1 голос
/ 21 апреля 2020

Это должно помочь вам начать:

GET INDEX/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "dateField": {
              "gte": "now-1M"
            }
          }
        },
        {
          "bool": {
            "filter": {
              "exists": {
                "field": "K"
              }
            }
          }
        },
        {
          "query_string": {
            "query": "K:(x OR y) OR K2:z"
          }
        },
        {
          "regexp": {
            "K": "abc*"
          }
        }
      ]
    }
  }
}

В качестве альтернативы вы можете переключить must на should, тем самым сопоставив или из этих подзапросов.

После этого замените _search на _delete_by_query и все будет хорошо go.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...