ユーザーエージェントプロセッサ
user_agent
プロセッサは、ブラウザがウェブリクエストと共に送信するユーザーエージェント文字列から詳細を抽出します。このプロセッサは、デフォルトで user_agent
フィールドの下にこの情報を追加します。
ingest-user-agent モジュールは、Apache 2.0 ライセンスのもとで uap-java によって提供される regexes.yaml と共にデフォルトで出荷されます。詳細については https://github.com/ua-parser/uap-core を参照してください。
パイプラインでの user_agent プロセッサの使用
名前 | 必須 | デフォルト | 説明 |
---|---|---|---|
field |
はい | - | ユーザーエージェント文字列を含むフィールド。 |
target_field |
いいえ | user_agent | ユーザーエージェントの詳細が記入されるフィールド。 |
regex_file |
いいえ | - | ユーザーエージェント文字列を解析するための正規表現を含む config/ingest-user-agent ディレクトリ内のファイル名。ディレクトリとファイルは、Elasticsearch を開始する前に作成する必要があります。指定されていない場合、ingest-user-agent は同梱されている uap-core の regexes.yaml を使用します(以下を参照)。 |
properties |
いいえ | [name , major , minor , patch , build , os , os_name , os_major , os_minor , device ] |
target_field に追加されるプロパティを制御します。 |
extract_device_type |
いいえ | false |
[ベータ] |
この機能はベータ版であり、変更される可能性があります。設計とコードは公式の GA 機能よりも成熟しておらず、現状のままで提供され、保証はありません。ベータ機能は公式の GA 機能のサポート SLA の対象外です。
ユーザーエージェント文字列からデバイスタイプを最善の努力で抽出します。 |
| ignore_missing
| いいえ | false
| true
と field
が存在しない場合、プロセッサは静かに終了し、ドキュメントを変更しません。
ここでは、agent
フィールドに基づいて user_agent
フィールドにユーザーエージェントの詳細を追加する例を示します:
Python
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)
Ruby
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
Js
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"
}
}
}
}
カスタム正規表現ファイルの使用
ユーザーエージェントを解析するためにカスタム正規表現ファイルを使用するには、そのファイルを config/ingest-user-agent
ディレクトリに置き、.yml
ファイル名拡張子を持つ必要があります。ファイルはノードの起動時に存在する必要があり、ノードが実行中にその変更や新しいファイルの追加は影響を与えません。
実際には、カスタム正規表現ファイルはデフォルトファイルのバリアントであることが最も理にかなっています。より新しいバージョンまたはカスタマイズされたバージョンです。
ingest-user-agent
に含まれるデフォルトファイルは、uap-core の regexes.yaml
です: https://github.com/ua-parser/uap-core/blob/master/regexes.yaml
ノード設定
user_agent
プロセッサは次の設定をサポートします:
ingest.user_agent.cache_size
- キャッシュすべき最大結果数。デフォルトは
1000
です。
これらの設定はノード設定であり、すべての user_agent
プロセッサに適用されます。つまり、すべての定義された user_agent
プロセッサに対して1つのキャッシュがあります。