Find field structure API
Elasticsearch インデックス内のフィールドの構造を見つけます。
Request
GET _text_structure/find_field_structure
Prerequisites
- Elasticsearch のセキュリティ機能が有効になっている場合、この API を使用するには
monitor_text_structure
またはmonitor
クラスター権限が必要です。詳細は Security privileges を参照してください。
Description
この API は、すでに Elasticsearch に取り込まれたログメッセージからさらに情報を抽出するための出発点を提供します。たとえば、@timestamp
および message
フィールドのみを持つ非常にシンプルなインデックスにデータを取り込んだ場合、この API を使用して message
フィールドに存在する共通の構造を確認できます。
API からの応答には次の情報が含まれます:
- サンプルメッセージ。
- テキスト内で検出されたすべてのフィールドの最も一般的な値を示す統計と、数値フィールドの基本的な数値統計。
- テキストの構造に関する情報。これは、インデックス作成のための取り込み設定を記述する際や、同様の形式のテキストに役立ちます。
- テキストを取り込むために使用できる Elasticsearch インデックスの適切なマッピング。
このすべての情報は、構造ファインダーによってガイダンスなしで計算できます。ただし、1つ以上のクエリパラメータを指定することで、テキスト構造に関するいくつかの決定をオーバーライドすることもできます。
出力の詳細は examples で確認できます。
構造ファインダーが予期しない結果を生成した場合は、explain
クエリパラメータを指定すると、explanation
が応答に表示されます。これは、返された構造が選択された理由を特定するのに役立ちます。
Query parameters
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
- (オプション、文字列) ECS 準拠の Grok パターンとの互換性のモード。このパラメータを使用して、構造ファインダーが Grok パターンを作成する際に、レガシーの代わりに ECS Grok パターンを使用するかどうかを指定します。有効な値は
disabled
とv1
です。デフォルト値はdisabled
です。この設定は、%{CATALINALOG}
のような全メッセージ Grok パターンが入力に一致する場合に主に影響します。構造ファインダーが共通の構造を特定するが意味がわからない場合、path
、ipaddress
、field1
、およびfield2
のような一般的なフィールド名がgrok_pattern
出力に使用され、意味を知っているユーザーがこれらのフィールドの名前を変更して使用することを意図しています。 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
文字グループ(小数秒)の長さが 1 から 9 のものが、ss
の後に出現し、ss
で区切られている場合にサポートされます。スペースや句読点も許可されますが、?
、改行、キャリッジリターン、および単一引用符で囲まれたリテラルテキストは除外されます。たとえば、MM/dd HH.mm.ss,SSSSSS 'in' yyyy
は有効なオーバーライド形式です。
このパラメータの貴重な使用例は、形式が半構造化テキストで、テキスト内に複数のタイムスタンプ形式があり、主要なタイムスタンプに対応する形式がわかっているが、完全なgrok_pattern
を指定したくない場合です。もう一つは、タイムスタンプ形式が構造ファインダーがデフォルトで考慮しないものである場合です。
このパラメータが指定されていない場合、構造ファインダーは組み込みのセットから最適な形式を選択します。
特別な値null
が指定されると、構造ファインダーはテキスト内で主要なタイムスタンプを探しません。形式が半構造化テキストの場合、これは構造ファインダーがテキストを単一行メッセージとして扱う結果になります。
次の表は、いくつかの例のタイムスタンプに対する適切なtimeformat
値を提供します:
| Timeformat | Presentation |
| :— | :— |
| yyyy-MM-dd HH:mm:ssZ | 2019-04-20 13:15:22+0000 |
| EEE, d MMM yyyy HH:mm:ss Z | Sat, 20 Apr 2019 13:15:22 +0000 |
| dd.MM.yy HH:mm:ss.SSS | 20.04.19 13:15:22.285 |
詳細な日付と時間の形式構文については、the Java date/time format documentation を参照してください。
Examples
Analyzing Elasticsearch log files
Elasticsearch のログメッセージのリストがインデックスにあると仮定します。find_field_structure
エンドポイントを使用してそれらを分析できます。
Python
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",
body=None,
)
print(resp1)
Ruby
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
Js
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.textStructure.findFieldStructure({
index: "test-logs",
field: "message",
body: null,
});
console.log(response1);
Console
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
Console-Result
{
"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 の取り込みに関する追加の例については、find text structure endpoint の例 を参照してください。