ES|QLの制限

結果セットサイズの制限

デフォルトでは、ES|QLクエリは最大1000行を返します。LIMITコマンドを使用して、行数を最大10,000まで増やすことができます。LIMITコマンドの値に関係なく、クエリは10,000行を超えることはありません。

この制限は、クエリによって取得される行数にのみ適用されます。クエリと集計は、完全なデータセットで実行されます。

この制限を克服するには:

  • クエリを修正して、関連するデータのみを返すことで結果セットのサイズを減らします。WHEREを使用して、データの小さなサブセットを選択します。
  • クエリ後の処理をクエリ自体に移します。ES|QLのSTATS ... BYコマンドを使用して、クエリ内でデータを集計できます。

デフォルトおよび最大の制限は、次の動的クラスタ設定を使用して変更できます:

  • esql.query.result_truncation_default_size
  • esql.query.result_truncation_max_size

フィールドタイプ

サポートされているタイプ

ES|QLは現在、次のフィールドタイプをサポートしています:

  • alias
  • boolean
  • date
  • double (floathalf_floatscaled_floatdoubleとして表されます)
  • ip
  • keywordファミリーにはkeywordconstant_keywordwildcardが含まれます
  • int (shortbyteintとして表されます)
  • long
  • null
  • text
  • [プレビュー] この機能は技術プレビュー中であり、将来のリリースで変更または削除される可能性があります。Elasticは問題を修正するために取り組みますが、技術プレビューの機能は公式GA機能のサポートSLAの対象ではありません。 unsigned_long
  • version
  • 空間タイプ
    • geo_point
    • geo_shape
    • point
    • shape

サポートされていないタイプ

ES|QLはまだ次のフィールドタイプをサポートしていません:

  • TSDBメトリクス
    • counter
    • position
    • aggregate_metric_double
  • 日付/時刻
    • date_nanos
    • date_range
  • その他のタイプ
    • binary
    • completion
    • dense_vector
    • double_range
    • flattened
    • float_range
    • histogram
    • integer_range
    • ip_range
    • long_range
    • nested
    • rank_feature
    • rank_features
    • search_as_you_type

サポートされていないタイプの列をクエリするとエラーが返されます。サポートされていないタイプの列がクエリで明示的に使用されていない場合、それはnullの値で返されますが、ネストされたフィールドはまったく返されません。

サポートされているタイプの制限

一部のフィールドタイプはすべてのコンテキストでサポートされていません:

  • 空間タイプは、SORT処理コマンドではサポートされていません。これらのタイプのいずれかの列をソートパラメータとして指定すると、エラーが発生します:
    • geo_point
    • geo_shape
    • cartesian_point
    • cartesian_shape

さらに、複数のインデックスをクエリする際に、同じフィールドが複数のタイプにマッピングされる可能性があります。これらのフィールドは、明示的に単一のタイプに変換されない限り、クエリで直接使用したり、結果に返したりすることはできません。

_sourceの可用性

ES|QLは、_sourceフィールド無効になっている構成をサポートしていません。

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

全文検索はサポートされていません

ES|QLがtext値を扱う方法のため、全文検索はまだサポートされていません。textフィールドに対するクエリは、keywordフィールドに対するクエリのように動作します:大文字と小文字を区別し、完全な文字列と一致する必要があります。

たとえば、text型のフィールドにElasticsearch query languageという値をインデックスした後、次のWHERE句はLIKE演算子が大文字と小文字を区別するため、一致しません:

Esql

  1. | WHERE field LIKE "elasticsearch query language"

次のWHERE句も一致しません。LIKE演算子は文字列全体を一致させようとするためです:

Esql

  1. | WHERE field LIKE "Elasticsearch"

回避策として、ワイルドカードや正規表現を使用します。たとえば:

Esql

  1. | WHERE field RLIKE "[Ee]lasticsearch.*"

テキストフィールドはキーワードフィールドのように動作します

ES|QLはtextフィールドをサポートしていますが、ES|QLはこれらのフィールドをSearch APIのようには扱いません。ES|QLクエリは分析された文字列をクエリまたは集計しません。代わりに、ES|QLクエリはtextフィールドのサブフィールドをkeywordファミリータイプから取得し、それをクエリ/集計します。keywordサブフィールドを取得できない場合、ES|QLはドキュメントの_sourceから文字列を取得します。_sourceが取得できない場合、たとえば合成ソースを使用している場合、nullが返されます。

ES|QLによるkeywordサブフィールドの取得には予期しない結果が生じる可能性があることに注意してください。textフィールドに対するES|QLクエリは大文字と小文字を区別します。さらに、サブフィールドはノーマライザーでマッピングされている可能性があり、元の文字列を変換することがあります。また、ignore_aboveでマッピングされている可能性があり、文字列を切り詰めることがあります。これらのマッピング操作はES|QLクエリには適用されず、偽陽性または偽陰性を引き起こす可能性があります。

これらの問題を回避するためのベストプラクティスは、クエリするフィールドを明示的に指定し、keywordサブフィールドをtextフィールドの代わりにクエリすることです。

時系列データストリームはサポートされていません

ES|QLは時系列データストリーム(TSDS)のクエリをサポートしていません。

日付数学の制限

日付数学の式は、最も左の式が日付時刻である場合にうまく機能します。たとえば:

Txt

  1. now() + 1 year - 2hour + ...

ただし、括弧を使用したり、日付時刻を右側に置いたりすることは、まだ常にサポートされているわけではありません。たとえば、次の式は失敗します:

Txt

  1. 1year + 2hour + now()
  2. now() + (1year + 2hour)

日付数学では、2つの日付時刻を引くことは許可されていません。たとえば:

Txt

  1. now() - 2023-10-26

エンリッチの制限

ES|QLのENRICHコマンドは、matchタイプのエンリッチポリシーのみをサポートします。さらに、ENRICHkeywordタイプの列でのエンリッチのみをサポートします。

ディセクトの制限

DISSECTコマンドは参照キーをサポートしていません。

グロックの制限

GROKコマンドは、カスタムパターン複数のパターンの設定をサポートしていません。GROKコマンドはGrok監視設定の対象ではありません。

マルチバリューの制限

ES|QLはmultivalued fieldsをサポートしていますが、関数はマルチバリューのフィールドに適用される場合、nullを返します。ドキュメントに記載されていない限り。この制限を回避するには、マルチバリュー関数のいずれかを使用してフィールドを単一値に変換します。

タイムゾーンのサポート

ES|QLはUTCタイムゾーンのみをサポートしています。

Kibanaの制限

  • DiscoverがES|QLモードのとき、データをフィルタリングするためのユーザーインターフェースは有効になりません。データをフィルタリングするには、WHEREコマンドを使用するクエリを書いてください。
  • Discoverは最大10,000行を表示します。この制限は、クエリによって取得され、Discoverに表示される行数にのみ適用されます。クエリと集計は、完全なデータセットで実行されます。
  • Discoverは最大50列を表示します。クエリが50列を超える場合、Discoverは最初の50列のみを表示します。
  • DiscoverからのCSVエクスポートは最大10,000行を表示します。この制限は、クエリによって取得され、Discoverに表示される行数にのみ適用されます。クエリと集計は、完全なデータセットで実行されます。
  • フィルターなしで一度に多くのインデックスをクエリすると、Kibanaで[esql] > Unexpected error from Elasticsearch: The content length (536885793) is bigger than the maximum allowed string (536870888)のようなエラーが発生する可能性があります。ES|QLからの応答が長すぎます。DROPまたはKEEPを使用して、返されるフィールドの数を制限してください。