Создание нового поля во всех документах из двух существующих полей в этом индексе в ElasticSearch - PullRequest
0 голосов
/ 11 апреля 2020

Во-первых, совершенно новый для стека ELK, поэтому все еще борюсь с терминологией.

Я пытался создать некоторые визуализации и обнаружил, что объединение полей с помощью JSON scipt является довольно привередливым, и, по-видимому, не рекомендуется.

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

{
  "script": {
  "source": "doc['hostname.keyword'].value + doc['session_id.keyword'].value",
  "lang": "painless"
  }
}

Так из моего исследования выясняется, что я должен добавить еще одно поле во время моего анализа GROK, чтобы это поле существовало в каждом документе, ускоряя поиск.

Таким образом, часть Grok может быть выполнена с помощью следующего :

add_field => { "hostname_session_id" => "%{hostname}:%{session_id}" }

Итак, чего мне не хватает, так это того, как я go обновляю все записи, уже внесенные в индекс, чтобы они добавляли это поле исторически, и каков наилучший способ сделать это в реальной системе где индекс добавляется тоже?

Мой Grok в настоящее время создает новый индекс каждый день, и я встаю тоже день второй, так что один stati c Index и еще один, который еще добавляется.

Спасибо

1 Ответ

0 голосов
/ 11 апреля 2020

Вы можете использовать API update by query для обновления существующих документов со скриптом, который определяет, как генерировать новое поле.

...