ユーザーエージェントプロセッサ

user_agent プロセッサは、ブラウザがウェブリクエストと共に送信するユーザーエージェント文字列から詳細を抽出します。このプロセッサは、デフォルトで user_agent フィールドの下にこの情報を追加します。

ingest-user-agent モジュールは、Apache 2.0 ライセンスのもとで uap-java によって提供される regexes.yaml と共にデフォルトで出荷されます。詳細については https://github.com/ua-parser/uap-core を参照してください。

パイプラインでの user_agent プロセッサの使用


表 48. ユーザーエージェントオプション

名前 必須 デフォルト 説明
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 | truefield が存在しない場合、プロセッサは静かに終了し、ドキュメントを変更しません。

ここでは、agent フィールドに基づいて user_agent フィールドにユーザーエージェントの詳細を追加する例を示します:

Python

  1. resp = client.ingest.put_pipeline(
  2. id="user_agent",
  3. description="Add user agent information",
  4. processors=[
  5. {
  6. "user_agent": {
  7. "field": "agent"
  8. }
  9. }
  10. ],
  11. )
  12. print(resp)
  13. resp1 = client.index(
  14. index="my-index-000001",
  15. id="my_id",
  16. pipeline="user_agent",
  17. document={
  18. "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"
  19. },
  20. )
  21. print(resp1)
  22. resp2 = client.get(
  23. index="my-index-000001",
  24. id="my_id",
  25. )
  26. print(resp2)

Ruby

  1. response = client.ingest.put_pipeline(
  2. id: 'user_agent',
  3. body: {
  4. description: 'Add user agent information',
  5. processors: [
  6. {
  7. user_agent: {
  8. field: 'agent'
  9. }
  10. }
  11. ]
  12. }
  13. )
  14. puts response
  15. response = client.index(
  16. index: 'my-index-000001',
  17. id: 'my_id',
  18. pipeline: 'user_agent',
  19. body: {
  20. 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'
  21. }
  22. )
  23. puts response
  24. response = client.get(
  25. index: 'my-index-000001',
  26. id: 'my_id'
  27. )
  28. puts response

Js

  1. const response = await client.ingest.putPipeline({
  2. id: "user_agent",
  3. description: "Add user agent information",
  4. processors: [
  5. {
  6. user_agent: {
  7. field: "agent",
  8. },
  9. },
  10. ],
  11. });
  12. console.log(response);
  13. const response1 = await client.index({
  14. index: "my-index-000001",
  15. id: "my_id",
  16. pipeline: "user_agent",
  17. document: {
  18. agent:
  19. "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",
  20. },
  21. });
  22. console.log(response1);
  23. const response2 = await client.get({
  24. index: "my-index-000001",
  25. id: "my_id",
  26. });
  27. console.log(response2);

コンソール

  1. PUT _ingest/pipeline/user_agent
  2. {
  3. "description" : "Add user agent information",
  4. "processors" : [
  5. {
  6. "user_agent" : {
  7. "field" : "agent"
  8. }
  9. }
  10. ]
  11. }
  12. PUT my-index-000001/_doc/my_id?pipeline=user_agent
  13. {
  14. "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"
  15. }
  16. GET my-index-000001/_doc/my_id

これにより返されます

コンソール結果

  1. {
  2. "found": true,
  3. "_index": "my-index-000001",
  4. "_id": "my_id",
  5. "_version": 1,
  6. "_seq_no": 22,
  7. "_primary_term": 1,
  8. "_source": {
  9. "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",
  10. "user_agent": {
  11. "name": "Chrome",
  12. "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",
  13. "version": "51.0.2704.103",
  14. "os": {
  15. "name": "Mac OS X",
  16. "version": "10.10.5",
  17. "full": "Mac OS X 10.10.5"
  18. },
  19. "device" : {
  20. "name" : "Mac"
  21. }
  22. }
  23. }
  24. }

カスタム正規表現ファイルの使用

ユーザーエージェントを解析するためにカスタム正規表現ファイルを使用するには、そのファイルを 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つのキャッシュがあります。