Перейти к основному содержимому
Версия: 6.1

Миграция запросов для включения настройки автоподстановки keyword

Обратите внимание!

Инструкция по миграции для перехода на версию 5.1.

Описание API миграции​

API миграции позволяет проверить запросы на необходимость миграции перед включением настройки автоподстановки keyword.

Обратите внимание!

Проверка миграции необходима, так как в команде search автоподстановка .keyword зависит от маппинга индексов в текущей инсталляции.


Проверка запросов в jobscheduler​

Для проверки запросов в jobscheduler выполните команду в консоли разработчика (Навигационное меню - Параметры системы - Консоль разработчика):

GET /_sme/migration/autokeyword/jobscheduler

Данная команда в ответ возвращает массив с объектами замены.

Пример ответа
[
{
"job_id": "rnxSF5cBk65B9KQf1jWm",
"index": ".sm_jsc_jobs",
"doc_id": "r3xSF5cBk65B9KQf1jWy",
"query": {
"original": """
source internal_audit* | search audit_transport_headers.X-Opaque-Id="1b7adabf"
""",
"replacement": """
source internal_audit* | search text audit_transport_headers.X-Opaque-Id="1b7adabf"
"""
}
}
]

Описание полей объекта замены:
job_id - идентификатор задания (поле _meta.id)
index - индекс, где хранится документ задания
doc_id - идентификатор документа задания (поле _id)
query - исходный запрос и запрос для замены


Проверка запросов в dashboards​

Для проверки запросов в dashboards выполните команду в консоли разработчика (Навигационное меню - Параметры системы - Консоль разработчика):

GET /_sme/migration/autokeyword/dashboards

Данная команда в ответ возвращает массив с объектами замены.

Пример ответа
[
{
"pathInJson": "rows[3].panels[0].viz.options.sme.query",
"dashboard_id": "incident_statistics",
"index": ".sm_dashboards",
"doc_id": "A8fyQ5cB8NGVbw6n_KHP",
"query": {
"original": ...,
"replacement": ...
}
}
]

Описание полей объекта замены:
dashboard_id - идентификатор дашборда (поле _meta.id)
index - индекс, где хранится документ задания
doc_id - идентификатор документа задания (поле _id)
query - исходный запрос и запрос для замены
pathInJson - путь для поиска запроса в json поле дашборда


Проверка одного запроса​

Чтобы проверить один запрос, выполните команду в консоли разработчика (Навигационное меню - Параметры системы - Консоль разработчика):

POST /_sme/migration/autokeyword/explain
{
"query": """
<SML запрос>
"""
}

Конкретный запрос может выглядеть следующим образом:

POST /_sme/migration/autokeyword/explain
{
"query": """
source internal_audit* | search audit_transport_headers.X-Opaque-Id="1b7adabf"
"""
}

Результатом команды будет структура, содержащая в себе информацию о необходимой замене запроса (поле replacement):

{
"original": """
source internal_audit* | search audit_transport_headers.X-Opaque-Id="1b7adabf"
""",
"replacement": """
source internal_audit* | search text audit_transport_headers.X-Opaque-Id="1b7adabf"
""",
"errors": [],
"search_fields": [
{
"position": 35,
"original": "audit_transport_headers.X-Opaque-Id",
"name": "audit_transport_headers.X-Opaque-Id",
"type": "text",
"hasTextOp": false,
"message": "Для поля добавлен оператор 'text'"
}
]
}

В данном примере ответ API указывает, что запрос:

source internal_audit* | search audit_transport_headers.X-Opaque-Id="1b7adabf"

Требуется заменить на запрос:

source internal_audit* | search text audit_transport_headers.X-Opaque-Id="1b7adabf"

То есть в запросе для замены к полю audit_transport_headers.X-Opaque-Id применен оператор text. Оператор text блокирует механизм автоподстановки .keyword. Если не произвести замену, то оператор text не будет применен, и в этом случае поле audit_transport_headers.X-Opaque-Id будет преобразовано в audit_transport_headers.X-Opaque-Id.keyword.

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

Маппинг поля audit_transport_headers.X-Opaque-Id в данном примере:

{
"audit_transport_headers.X-Opaque-Id": {
"full_name": "audit_transport_headers.X-Opaque-Id",
"mapping": {
"X-Opaque-Id": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}

Структура описания замены SML запроса​

Все поля которые могут встречаться в структуре объяснения замены приведены в таблице.

ПолеОписание
originalИсходный запрос
expansionРезультат раскрытия всех макросов
macrosДеревья раскрытия макросов (состоит из узлов раскрытия макросов). Описывают раскрытие макросов первого уровня
replacementЗамена исходного запроса
errorsОшибки, возникшие при обработке запроса
search_fieldsМассив найденных полей и их атрибутов

Структура узла дерева раскрытия макроса​

Структура узла дерева раскрытия макроса описывает раскрытие одного макроса.

ПолеОписание
expansion_positionПозиция раскрытия макроса в исходном запросе
originalОригинальный текст (не раскрытый макрос)
expansionРезультат раскрытия макроса
nameИмя макроса
macrosРезультат раскрытия дочерних (вложенных) макросов
search_fieldsМассив найденных полей, порожденных раскрытием макроса

Структура поля и его атрибуты​

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

Обратите внимание!

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

ПолеОписание
positionПозиция поля (после раскрытия всех макросов)
originalОригинальный текст поля
nameИмя поля
typeТип поля
hasTextOpПрименен ли к полю оператор text
messageИнформация о статусе добавления оператора text к полю