複数のインデックスをクエリするためのES|QLの使用

ES|QLを使用すると、複数のインデックス、データストリーム、またはエイリアスに対して単一のクエリを実行できます。そのためには、ワイルドカードと日付の算術を使用します。以下の例では、カンマ区切りのリストとワイルドカードを使用しています:

Esql

  1. FROM employees-00001,other-employees-*
  1. #### Esql
  2. ``````esql
  3. FROM cluster_one:employees-00001,cluster_two:other-employees-*
  4. `

フィールドタイプの不一致

複数のインデックス、データストリーム、またはエイリアスをクエリする際、同じフィールドが複数の異なるタイプにマッピングされていることがあります。例えば、次のフィールドマッピングを持つ2つのインデックスを考えてみましょう:

インデックス: events_ip

  1. {
  2. "mappings": {
  3. "properties": {
  4. "@timestamp": { "type": "date" },
  5. "client_ip": { "type": "ip" },
  6. "event_duration": { "type": "long" },
  7. "message": { "type": "keyword" }
  8. }
  9. }
  10. }

インデックス: events_keyword

  1. {
  2. "mappings": {
  3. "properties": {
  4. "@timestamp": { "type": "date" },
  5. "client_ip": { "type": "keyword" },
  6. "event_duration": { "type": "long" },
  7. "message": { "type": "keyword" }
  8. }
  9. }
  10. }

これらをそれぞれFROM events_ipのようなシンプルなクエリで個別にクエリすると、結果はタイプ固有の列で提供されます:

Esql

  1. FROM events_ip
  2. | 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

  1. FROM events_*
  2. | 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

  1. FROM events_*
  2. | SORT client_ip DESC

Bash

  1. Cannot use field [client_ip] due to ambiguities being mapped as
  2. [2] incompatible types:
  3. [ip] in [events_ip],
  4. [keyword] in [events_keyword]

ユニオンタイプ

この機能は技術プレビュー中であり、将来のリリースで変更または削除される可能性があります。Elasticは問題を修正するために取り組みますが、技術プレビューの機能は公式GA機能のサポートSLAの対象ではありません。

ES|QLには、フィールドタイプの不一致を処理する方法があります。同じフィールドが複数のインデックスで複数のタイプにマッピングされている場合、そのフィールドのタイプはインデックスマッピング内のさまざまなタイプのユニオンとして理解されます。前述の例に見られるように、このユニオンタイプは結果で使用できず、クエリで参照することもできません—KEEPDROP、またはユニオン内のすべてのタイプを受け入れ、フィールドを単一のタイプに変換する型変換関数に渡される場合を除いて。ES|QLは、これを達成するための型変換関数のスイートを提供します。

上記の例では、クエリはEVAL client_ip = TO_IP(client_ip)のようなコマンドを使用してipkeywordのユニオンをipに解決できます。また、型変換構文EVAL client_ip = client_ip::IPを使用することもできます。あるいは、クエリはTO_STRINGを使用して、すべてのサポートされているタイプをKEYWORDに変換することができます。

例えば、client_ip:unsupportedを返したクエリは、null値を持ち、TO_IP関数または同等のfield::ip構文を使用して改善できます。これらの変更はエラーメッセージも解決します。元のフィールドへの唯一の参照が、タイプの曖昧さを解決する変換関数に渡すことである限り、エラーは発生しません。

Esql

  1. FROM events_*
  2. | EVAL client_ip = TO_IP(client_ip)
  3. | KEEP @timestamp, client_ip, event_duration, message
  4. | 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

  1. FROM events_* METADATA _index
  2. | EVAL client_ip = TO_IP(client_ip)
  3. | KEEP _index, @timestamp, client_ip, event_duration, message
  4. | 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に接続