複数のインデックスをクエリするためのES|QLの使用
ES|QLを使用すると、複数のインデックス、データストリーム、またはエイリアスに対して単一のクエリを実行できます。そのためには、ワイルドカードと日付の算術を使用します。以下の例では、カンマ区切りのリストとワイルドカードを使用しています:
Esql
FROM employees-00001,other-employees-*
#### Esql
``````esql
FROM cluster_one:employees-00001,cluster_two:other-employees-*
`
フィールドタイプの不一致
複数のインデックス、データストリーム、またはエイリアスをクエリする際、同じフィールドが複数の異なるタイプにマッピングされていることがあります。例えば、次のフィールドマッピングを持つ2つのインデックスを考えてみましょう:
インデックス: events_ip
{
"mappings": {
"properties": {
"@timestamp": { "type": "date" },
"client_ip": { "type": "ip" },
"event_duration": { "type": "long" },
"message": { "type": "keyword" }
}
}
}
インデックス: events_keyword
{
"mappings": {
"properties": {
"@timestamp": { "type": "date" },
"client_ip": { "type": "keyword" },
"event_duration": { "type": "long" },
"message": { "type": "keyword" }
}
}
}
これらをそれぞれFROM events_ip
のようなシンプルなクエリで個別にクエリすると、結果はタイプ固有の列で提供されます:
Esql
FROM events_ip
| SORT @timestamp DESC
@timestamp:date | client_ip:ip | event_duration:long | message:keyword |
---|---|---|---|
2023-10-23T13:55:01.543Z | 172.21.3.15 | 1756467 | 10.1.0.1に接続 |
2023-10-23T13:53:55.832Z | 172.21.3.15 | 5033755 | 接続エラー |
2023-10-23T13:52:55.015Z | 172.21.3.15 | 8268153 | 接続エラー |
client_ip
列が正しくip
タイプとして識別され、すべての値が表示されることに注意してください。しかし、代わりにFROM events_*
を持つ2つの矛盾するインデックスをクエリすると、client_ip
列のタイプは決定できず、すべての値がnull
として返されるunsupported
として報告されます。
Esql
FROM events_*
| SORT @timestamp DESC
@timestamp:date | client_ip:unsupported | event_duration:long | message:keyword |
---|---|---|---|
2023-10-23T13:55:01.543Z | null | 1756467 | 10.1.0.1に接続 |
2023-10-23T13:53:55.832Z | null | 5033755 | 接続エラー |
2023-10-23T13:52:55.015Z | null | 8268153 | 接続エラー |
2023-10-23T13:51:54.732Z | null | 725448 | 接続エラー |
2023-10-23T13:33:34.937Z | null | 1232382 | 切断 |
2023-10-23T12:27:28.948Z | null | 2764889 | 10.1.0.2に接続 |
2023-10-23T12:15:03.360Z | null | 3450233 | 10.1.0.3に接続 |
さらに、クエリがこのサポートされていないフィールドを直接参照すると、クエリは失敗します:
Esql
FROM events_*
| SORT client_ip DESC
Bash
Cannot use field [client_ip] due to ambiguities being mapped as
[2] incompatible types:
[ip] in [events_ip],
[keyword] in [events_keyword]
ユニオンタイプ
この機能は技術プレビュー中であり、将来のリリースで変更または削除される可能性があります。Elasticは問題を修正するために取り組みますが、技術プレビューの機能は公式GA機能のサポートSLAの対象ではありません。
ES|QLには、フィールドタイプの不一致を処理する方法があります。同じフィールドが複数のインデックスで複数のタイプにマッピングされている場合、そのフィールドのタイプはインデックスマッピング内のさまざまなタイプのユニオンとして理解されます。前述の例に見られるように、このユニオンタイプは結果で使用できず、クエリで参照することもできません—KEEP
、DROP
、またはユニオン内のすべてのタイプを受け入れ、フィールドを単一のタイプに変換する型変換関数に渡される場合を除いて。ES|QLは、これを達成するための型変換関数のスイートを提供します。
上記の例では、クエリはEVAL client_ip = TO_IP(client_ip)
のようなコマンドを使用してip
とkeyword
のユニオンをip
に解決できます。また、型変換構文EVAL client_ip = client_ip::IP
を使用することもできます。あるいは、クエリはTO_STRING
を使用して、すべてのサポートされているタイプをKEYWORD
に変換することができます。
例えば、client_ip:unsupported
を返したクエリは、null
値を持ち、TO_IP
関数または同等のfield::ip
構文を使用して改善できます。これらの変更はエラーメッセージも解決します。元のフィールドへの唯一の参照が、タイプの曖昧さを解決する変換関数に渡すことである限り、エラーは発生しません。
Esql
FROM events_*
| EVAL client_ip = TO_IP(client_ip)
| KEEP @timestamp, client_ip, event_duration, message
| SORT @timestamp DESC
@timestamp:date | client_ip:ip | event_duration:long | message:keyword |
---|---|---|---|
2023-10-23T13:55:01.543Z | 172.21.3.15 | 1756467 | 10.1.0.1に接続 |
2023-10-23T13:53:55.832Z | 172.21.3.15 | 5033755 | 接続エラー |
2023-10-23T13:52:55.015Z | 172.21.3.15 | 8268153 | 接続エラー |
2023-10-23T13:51:54.732Z | 172.21.3.15 | 725448 | 接続エラー |
2023-10-23T13:33:34.937Z | 172.21.0.5 | 1232382 | 切断 |
2023-10-23T12:27:28.948Z | 172.21.2.113 | 2764889 | 10.1.0.2に接続 |
2023-10-23T12:15:03.360Z | 172.21.2.162 | 3450233 | 10.1.0.3に接続 |
インデックスメタデータ
各行がどの特定のインデックスから取得されているかを知ることは役立ちます。この情報を取得するには、METADATA
オプションをFROM
コマンドで使用します。
Esql
FROM events_* METADATA _index
| EVAL client_ip = TO_IP(client_ip)
| KEEP _index, @timestamp, client_ip, event_duration, message
| SORT @timestamp DESC
_index:keyword | @timestamp:date | client_ip:ip | event_duration:long | message:keyword |
---|---|---|---|---|
events_ip | 2023-10-23T13:55:01.543Z | 172.21.3.15 | 1756467 | 10.1.0.1に接続 |
events_ip | 2023-10-23T13:53:55.832Z | 172.21.3.15 | 5033755 | 接続エラー |
events_ip | 2023-10-23T13:52:55.015Z | 172.21.3.15 | 8268153 | 接続エラー |
events_keyword | 2023-10-23T13:51:54.732Z | 172.21.3.15 | 725448 | 接続エラー |
events_keyword | 2023-10-23T13:33:34.937Z | 172.21.0.5 | 1232382 | 切断 |
events_keyword | 2023-10-23T12:27:28.948Z | 172.21.2.113 | 2764889 | 10.1.0.2に接続 |
events_keyword | 2023-10-23T12:15:03.360Z | 172.21.2.162 | 3450233 | 10.1.0.3に接続 |