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
(float
、half_float
、scaled_float
はdouble
として表されます)ip
keyword
ファミリーにはkeyword
、constant_keyword
、wildcard
が含まれますint
(short
とbyte
はint
として表されます)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
| WHERE field LIKE "elasticsearch query language"
次のWHERE
句も一致しません。LIKE
演算子は文字列全体を一致させようとするためです:
Esql
| WHERE field LIKE "Elasticsearch"
回避策として、ワイルドカードや正規表現を使用します。たとえば:
Esql
| 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
now() + 1 year - 2hour + ...
ただし、括弧を使用したり、日付時刻を右側に置いたりすることは、まだ常にサポートされているわけではありません。たとえば、次の式は失敗します:
Txt
1year + 2hour + now()
now() + (1year + 2hour)
日付数学では、2つの日付時刻を引くことは許可されていません。たとえば:
Txt
now() - 2023-10-26
エンリッチの制限
ES|QLのENRICH
コマンドは、match
タイプのエンリッチポリシーのみをサポートします。さらに、ENRICH
はkeyword
タイプの列でのエンリッチのみをサポートします。
ディセクトの制限
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
を使用して、返されるフィールドの数を制限してください。