Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›REST API ›API структур текста

API поиска структуры поля

Новая справка по API

Для получения самых последних данных об API обратитесь к API структур текста.

Находит структуру поля в индексе Elasticsearch.

Запрос

GET _text_structure/find_field_structure

Предварительные условия

  • Если включены функции безопасности Elasticsearch, вам необходимо иметь monitor_text_structure или monitor привилегии кластера для использования этого API. См. Привилегии безопасности.

Описание

Этот API предоставляет отправную точку для извлечения дополнительной информации из сообщений журнала, уже обработанных в Elasticsearch. Например, если вы загрузили данные в очень простой индекс, содержащий только поля @timestamp и message, вы можете использовать этот API, чтобы увидеть, какая общая структура существует в поле message.

Ответ от API содержит:

  • Примеры сообщений.
  • Статистику, которая показывает наиболее частые значения для всех обнаруженных полей и базовые числовые статистики для числовых полей.
  • Информацию о структуре текста, которая полезна при написании конфигураций обработки для индексирования или аналогичного форматированного текста.
  • Соответствующие отображения для индекса Elasticsearch, которые вы могли бы использовать для обработки текста.

Вся эта информация может быть рассчитана поисковиком структуры без руководства. Однако вы можете необязательно переопределить некоторые решения о структуре текста, указав один или несколько параметров запроса.

Подробности вывода можно увидеть в примерах.

Если поисковик структуры выдаёт неожиданные результаты, укажите параметр запроса explain, и в ответе появится explanation. Это поможет определить, почему была выбрана возвращаемая структура.

Параметры запроса

index
(Обязательно, строка) Название индекса, содержащего поле.
field
(Обязательно, строка) Название анализируемого поля.
column_names
(Необязательно, строка) Если вы установили format в delimited, вы можете указать имена столбцов в виде списка, разделённого запятыми. Если этот параметр не указан, поиск структуры использует имена столбцов из первой строки текста. Если в тексте нет заголовка, столбцы будут именоваться "column1", "column2", "column3" и так далее.
delimiter
(Необязательно, строка) Если вы установили format в delimited, вы можете указать символ, используемый для разделителя значений в каждой строке. Поддерживается только один символ; разделитель не может состоять из нескольких символов. По умолчанию API рассматривает следующие возможности: запятая, табуляция, точка с запятой и вертикальная черта (|). В этом сценарии по умолчанию все строки должны иметь одинаковое количество полей для распознавания разделимого формата. Если вы указываете разделитель, до 10% строк могут иметь разное количество столбцов, чем в первой строке.
documents_to_sample
(Необязательно, целое без знака) Количество документов для включения в структурный анализ. Минимальное значение — 2; по умолчанию — 1000.
explain
(Необязательно, логическое значение) Если true, ответ включает поле с именем explanation, которое представляет собой массив строк, указывающих, как поиск структуры произвёл результат. Значение по умолчанию — false.
format
(Необязательно, строка) Высокоуровневая структура текста. Допустимые значения — ndjson, xml, delimited и semi_structured_text. По умолчанию API выбирает формат. В этом сценарии по умолчанию все строки должны иметь одинаковое количество полей для распознавания разделимого формата. Однако, если format установлено в delimited, а delimiter не установлено, API допускает до 5% строк с разным количеством столбцов, чем в первой строке.
grok_pattern
(Необязательно, строка) Если вы установили format в semi_structured_text, вы можете указать шаблон Grok, используемый для извлечения полей из каждого сообщения в тексте. Имя поля времени в шаблоне Grok должно соответствовать тому, что указано в параметре timestamp_field. Если этот параметр не указан, имя поля времени в шаблоне Grok должно соответствовать "timestamp". Если grok_pattern не указано, поиск структуры создаёт шаблон Grok.
ecs_compatibility
(Необязательно, строка) Режим совместимости с шаблонами Grok, соответствующими спецификации ECS. Используйте этот параметр, чтобы указать, использовать ли шаблоны ECS Grok вместо устаревших, когда поиск структуры создаёт шаблон Grok. Допустимые значения — disabled и v1. Значение по умолчанию — disabled. Эта настройка в основном влияет, когда весь шаблон Grok сообщения, например, %{CATALINALOG}, соответствует вводу. Если поиск структуры определяет общую структуру, но не понимает значения, в выходных данных grok_pattern используются общие имена полей, такие как path, ipaddress, field1 и field2, с намерением, что пользователь, знающий значения, переименует эти поля перед использованием.
quote
(Необязательно, строка) Если вы установили format в delimited, вы можете указать символ, используемый для заключения значений в каждой строке, если они содержат новые строки или символ разделителя. Поддерживается только один символ. Если этот параметр не указан, значение по умолчанию — двойная кавычка ("). Если ваш формат разделимого текста не использует кавычки, обходным путём является установка этого аргумента на символ, который не встречается нигде в образце.
should_trim_fields
(Необязательно, логическое значение) Если вы установили format в delimited, вы можете указать, нужно ли обрезать пробелы между разделителями. Если этот параметр не указан, а разделитель — вертикальная черта (|), значение по умолчанию — true. В противном случае значение по умолчанию — false.
timeout
(Необязательно, единицы измерения времени) Устанавливает максимальное время, которое может занять анализ структуры. Если анализ всё ещё выполняется по истечении времени ожидания, он будет остановлен. Значение по умолчанию — 25 секунд.
timestamp_field

(Необязательно, строка) Название поля, содержащего основное время каждой записи в тексте. В частности, если текст был загружен в индекс, это поле будет использоваться для заполнения поля @timestamp.

Если format — semi_structured_text, это поле должно соответствовать имени соответствующего извлечения в grok_pattern. Поэтому для полуструктурированного текста лучше не указывать этот параметр, если также не указан параметр grok_pattern.

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

Если этот параметр не указан, поиск структуры принимает решение о том, какое поле (если есть) является основным полем времени. Для структурированного текста наличие времени в тексте не обязательно.

timestamp_format

(Необязательно, строка) Формат времени Java поля времени в тексте.

Поддерживается только подмножество буквенных групп формата времени Java:

  • a
  • d
  • dd
  • EEE
  • EEEE
  • H
  • HH
  • h
  • M
  • MM
  • MMM
  • MMMM
  • mm
  • ss
  • XX
  • XXX
  • yy
  • yyyy
  • zzz

Кроме того, поддерживаются буквенные группы S (дробные секунды) длиной от одной до девяти, при условии, что они следуют за ss и отделены от ss с помощью ., , или :. Также допускаются пробелы и знаки препинания, за исключением ?, новой строки и возврат каретки, а также литеральный текст в одинарных кавычках. Например, MM/dd HH.mm.ss,SSSSSS 'in' yyyy — это допустимый формат переопределения.

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

Если этот параметр не указан, поиск структуры выбирает лучший формат из встроенного набора.

Если указано специальное значение null, поиск структуры не будет искать основное время в тексте. Когда формат — полуструктурированный текст, это приведёт к тому, что поиск структуры будет рассматривать текст как сообщения в одну строку.

В следующей таблице приведены соответствующие timeformat значения для некоторых примеров времени:

Формат времени Представление

yyyy-MM-dd HH:mm:ssZ

2019-04-20 13:15:22+0000

EEE, d MMM yyyy HH:mm:ss Z

Сб, 20 апр 2019 13:15:22 +0000

dd.MM.yy HH:mm:ss.SSS

20.04.19 13:15:22.285

Обратитесь к документации формата даты/времени Java для получения дополнительной информации о синтаксисе формата даты и времени.

Примеры

Анализ лог-файлов Elasticsearch

Предположим, у вас есть список сообщений журнала Elasticsearch в индексе. Вы можете проанализировать их с помощью конечной точки find_field_structure следующим образом:

resp = client.bulk(
    refresh=True,
    operations=[
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-monitoring]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-s3]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-analytics]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-ent-search]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-autoscaling]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-expression]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-eql]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:43,291][INFO ][o.e.e.NodeEnvironment    ] [laptop] heap size [16gb], compressed ordinary object pointers [true]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:46,098][INFO ][o.e.x.s.Security         ] [laptop] Security is enabled"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:47,227][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] Profiling is enabled"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:47,259][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] profiling index templates will not be installed or reinstalled"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:47,755][INFO ][o.e.i.r.RecoverySettings ] [laptop] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:47,787][INFO ][o.e.d.DiscoveryModule    ] [laptop] using discovery type [multi-node] and seed hosts providers [settings]"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:49,188][INFO ][o.e.n.Node               ] [laptop] initialized"
        },
        {
            "index": {
                "_index": "test-logs"
            }
        },
        {
            "message": "[2024-03-05T10:52:49,199][INFO ][o.e.n.Node               ] [laptop] starting ..."
        }
    ],
)
print(resp)

resp1 = client.text_structure.find_field_structure(
    index="test-logs",
    field="message",
)
print(resp1)
response = client.bulk(
  refresh: true,
  body: [
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-monitoring]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-s3]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-analytics]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-ent-search]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-autoscaling]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-expression]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-eql]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:43,291][INFO ][o.e.e.NodeEnvironment    ] [laptop] heap size [16gb], compressed ordinary object pointers [true]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:46,098][INFO ][o.e.x.s.Security         ] [laptop] Security is enabled'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:47,227][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] Profiling is enabled'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:47,259][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] profiling index templates will not be installed or reinstalled'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:47,755][INFO ][o.e.i.r.RecoverySettings ] [laptop] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:47,787][INFO ][o.e.d.DiscoveryModule    ] [laptop] using discovery type [multi-node] and seed hosts providers [settings]'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:49,188][INFO ][o.e.n.Node               ] [laptop] initialized'
    },
    {
      index: {
        _index: 'test-logs'
      }
    },
    {
      message: '[2024-03-05T10:52:49,199][INFO ][o.e.n.Node               ] [laptop] starting ...'
    }
  ]
)
puts response

response = client.text_structure.find_field_structure(
  index: 'test-logs',
  field: 'message'
)
puts response
const response = await client.bulk({
  refresh: "true",
  operations: [
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-monitoring]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-s3]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-analytics]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-ent-search]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-autoscaling]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-expression]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-eql]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:43,291][INFO ][o.e.e.NodeEnvironment    ] [laptop] heap size [16gb], compressed ordinary object pointers [true]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:46,098][INFO ][o.e.x.s.Security         ] [laptop] Security is enabled",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:47,227][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] Profiling is enabled",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:47,259][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] profiling index templates will not be installed or reinstalled",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:47,755][INFO ][o.e.i.r.RecoverySettings ] [laptop] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:47,787][INFO ][o.e.d.DiscoveryModule    ] [laptop] using discovery type [multi-node] and seed hosts providers [settings]",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:49,188][INFO ][o.e.n.Node               ] [laptop] initialized",
    },
    {
      index: {
        _index: "test-logs",
      },
    },
    {
      message:
        "[2024-03-05T10:52:49,199][INFO ][o.e.n.Node               ] [laptop] starting ...",
    },
  ],
});
console.log(response);

const response1 = await client.transport.request({
  method: "GET",
  path: "/_text_structure/find_field_structure",
  querystring: {
    index: "test-logs",
    field: "message",
  },
});
console.log(response1);
POST _bulk?refresh=true
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-monitoring]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-s3]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-analytics]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-ent-search]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-autoscaling]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-expression]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:41,059][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-eql]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:43,291][INFO ][o.e.e.NodeEnvironment    ] [laptop] heap size [16gb], compressed ordinary object pointers [true]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:46,098][INFO ][o.e.x.s.Security         ] [laptop] Security is enabled"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:47,227][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] Profiling is enabled"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:47,259][INFO ][o.e.x.p.ProfilingPlugin  ] [laptop] profiling index templates will not be installed or reinstalled"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:47,755][INFO ][o.e.i.r.RecoverySettings ] [laptop] using rate limit [40mb] with [default=40mb, read=0b, write=0b, max=0b]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:47,787][INFO ][o.e.d.DiscoveryModule    ] [laptop] using discovery type [multi-node] and seed hosts providers [settings]"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:49,188][INFO ][o.e.n.Node               ] [laptop] initialized"}
{"index":{"_index":"test-logs"}}
{"message":"[2024-03-05T10:52:49,199][INFO ][o.e.n.Node               ] [laptop] starting ..."}

GET _text_structure/find_field_structure?index=test-logs&field=message

Если запрос не столкнётся с ошибками, вы получите следующий результат:

{
  "num_lines_analyzed" : 22,
  "num_messages_analyzed" : 22,
  "sample_start" : "[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128\n[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]\n", 
  "charset" : "UTF-8",
  "format" : "semi_structured_text",
  "multiline_start_pattern" : "^\\[\\b\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}",
  "grok_pattern" : "\\[%{TIMESTAMP_ISO8601:timestamp}\\]\\[%{LOGLEVEL:loglevel} \\]\\[.*",
  "ecs_compatibility" : "disabled",
  "timestamp_field" : "timestamp",
  "joda_timestamp_formats" : [
    "ISO8601"
  ],
  "java_timestamp_formats" : [
    "ISO8601"
  ],
  "need_client_timezone" : true,
  "mappings" : {
    "properties" : {
      "@timestamp" : {
        "type" : "date"
      },
      "loglevel" : {
        "type" : "keyword"
      },
      "message" : {
        "type" : "text"
      }
    }
  },
  "ingest_pipeline" : {
    "description" : "Ingest pipeline created by text structure finder",
    "processors" : [
      {
        "grok" : {
          "field" : "message",
          "patterns" : [
            "\\[%{TIMESTAMP_ISO8601:timestamp}\\]\\[%{LOGLEVEL:loglevel} \\]\\[.*"
          ],
          "ecs_compatibility" : "disabled"
        }
      },
      {
        "date" : {
          "field" : "timestamp",
          "timezone" : "{{ event.timezone }}",
          "formats" : [
            "ISO8601"
          ]
        }
      },
      {
        "remove" : {
          "field" : "timestamp"
        }
      }
    ]
  },
  "field_stats" : {
    "loglevel" : {
      "count" : 22,
      "cardinality" : 1,
      "top_hits" : [
        {
          "value" : "INFO",
          "count" : 22
        }
      ]
    },
    "message" : {
      "count" : 22,
      "cardinality" : 22,
      "top_hits" : [
        {
          "value" : "[2024-03-05T10:52:36,256][INFO ][o.a.l.u.VectorUtilPanamaProvider] [laptop] Java vector incubator API enabled; uses preferredBitSize=128",
          "count" : 1
        },
        {
          "value" : "[2024-03-05T10:52:41,038][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-url]",
          "count" : 1
        },
        {
          "value" : "[2024-03-05T10:52:41,042][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [rest-root]",
          "count" : 1
        },
        {
          "value" : "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [ingest-user-agent]",
          "count" : 1
        },
        {
          "value" : "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-core]",
          "count" : 1
        },
        {
          "value" : "[2024-03-05T10:52:41,043][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-redact]",
          "count" : 1
        },
        {
          "value" : "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [lang-painless]]",
          "count" : 1
        },
        {
          "value" : "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [repository-s3]",
          "count" : 1
        },
        {
          "value" : "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-analytics]",
          "count" : 1
        },
        {
          "value" : "[2024-03-05T10:52:41,044][INFO ][o.e.p.PluginsService     ] [laptop] loaded module [x-pack-autoscaling]",
          "count" : 1
        }
      ]
    },
    "timestamp" : {
      "count" : 22,
      "cardinality" : 14,
      "earliest" : "2024-03-05T10:52:36,256",
      "latest" : "2024-03-05T10:52:49,199",
      "top_hits" : [
        {
          "value" : "2024-03-05T10:52:41,044",
          "count" : 6
        },
        {
          "value" : "2024-03-05T10:52:41,043",
          "count" : 3
        },
        {
          "value" : "2024-03-05T10:52:41,059",
          "count" : 2
        },
        {
          "value" : "2024-03-05T10:52:36,256",
          "count" : 1
        },
        {
          "value" : "2024-03-05T10:52:41,038",
          "count" : 1
        },
        {
          "value" : "2024-03-05T10:52:41,042",
          "count" : 1
        },
        {
          "value" : "2024-03-05T10:52:43,291",
          "count" : 1
        },
        {
          "value" : "2024-03-05T10:52:46,098",
          "count" : 1
        },
        {
          "value" : "2024-03-05T10:52:47,227",
          "count" : 1
        },
        {
          "value" : "2024-03-05T10:52:47,259",
          "count" : 1
        }
      ]
    }
  }
}

Для получения подробного описания формата ответа или дополнительных примеров по загрузке текстовых данных, разделённых разделителями (например, CSV) или JSON, разделённых новой строкой, обратитесь к примерам конечной точки поиска структуры текста.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/find-field-structure.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API