Процессор user agent
Процессор user_agent извлекает данные из строки user agent, которую браузер отправляет вместе с веб-запросами. Этот процессор по умолчанию добавляет эту информацию в поле user_agent.
Модуль ingest-user-agent по умолчанию поставляется с regexes.yaml, предоставленным uap-java с лицензией Apache 2.0. Для получения дополнительной информации см. https://github.com/ua-parser/uap-core.
Использование процессора user_agent в конвейере
Таблица 50. Параметры user-agent
| Имя | Обязательно | По умолчанию | Описание |
|---|---|---|---|
| да | - | Поле, содержащее строку user agent. |
| нет | user_agent | Поле, которое будет заполнено данными user agent. |
| нет | - | Имя файла в каталоге |
| нет | [ | Управляет тем, какие свойства добавляются в поле |
| нет |
| [beta] Эта функция находится в стадии бета-тестирования и может быть изменена. Дизайн и код менее зрелые, чем официальные функции GA, и предоставляются как есть без каких-либо гарантий. Для бета-функций не действует SLA поддержки, предусмотренная для официальных функций GA. Извлекает тип устройства из строки user agent с максимальной эффективностью. |
| нет |
| Если |
Вот пример, который добавляет данные user agent в поле user_agent, основанные на поле agent:
resp = client.ingest.put_pipeline(
id="user_agent",
description="Add user agent information",
processors=[
{
"user_agent": {
"field": "agent"
}
}
],
)
print(resp)
resp1 = client.index(
index="my-index-000001",
id="my_id",
pipeline="user_agent",
document={
"agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
},
)
print(resp1)
resp2 = client.get(
index="my-index-000001",
id="my_id",
)
print(resp2) response = client.ingest.put_pipeline(
id: 'user_agent',
body: {
description: 'Add user agent information',
processors: [
{
user_agent: {
field: 'agent'
}
}
]
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 'my_id',
pipeline: 'user_agent',
body: {
agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'
}
)
puts response
response = client.get(
index: 'my-index-000001',
id: 'my_id'
)
puts response const response = await client.ingest.putPipeline({
id: "user_agent",
description: "Add user agent information",
processors: [
{
user_agent: {
field: "agent",
},
},
],
});
console.log(response);
const response1 = await client.index({
index: "my-index-000001",
id: "my_id",
pipeline: "user_agent",
document: {
agent:
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
},
});
console.log(response1);
const response2 = await client.get({
index: "my-index-000001",
id: "my_id",
});
console.log(response2); PUT _ingest/pipeline/user_agent
{
"description" : "Add user agent information",
"processors" : [
{
"user_agent" : {
"field" : "agent"
}
}
]
}
PUT my-index-000001/_doc/my_id?pipeline=user_agent
{
"agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
}
GET my-index-000001/_doc/my_id Что возвращает
{
"found": true,
"_index": "my-index-000001",
"_id": "my_id",
"_version": 1,
"_seq_no": 22,
"_primary_term": 1,
"_source": {
"agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
"user_agent": {
"name": "Chrome",
"original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
"version": "51.0.2704.103",
"os": {
"name": "Mac OS X",
"version": "10.10.5",
"full": "Mac OS X 10.10.5"
},
"device" : {
"name" : "Mac"
}
}
}
} Использование пользовательского файла regex
Чтобы использовать пользовательский файл regex для разбора user agent, этот файл должен быть помещен в каталог config/ingest-user-agent и иметь расширение файла .yml. Файл должен присутствовать при запуске узла; любые изменения в нем или новые добавленные файлы во время работы узла не повлияют на него.
На практике, любой пользовательский файл regex должен быть вариантом исходного файла, либо более новой версией, либо настроенной версией.
Файл по умолчанию, включенный в ingest-user-agent, представляет собой regexes.yaml из uap-core: https://github.com/ua-parser/uap-core/blob/master/regexes.yaml
Настройки узла
Процессор user_agent поддерживает следующие настройки:
-
ingest.user_agent.cache_size - Максимальное количество результатов, которое должно быть кэшировано. По умолчанию
1000.
Обратите внимание, что эти настройки являются настройками узла и применяются ко всем процессорам user_agent, т. е. существует один кэш для всех определенных процессоров user_agent.
© 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/user-agent-processor.html