Перейти к основному содержимому
Версия: 5.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 к полю