Kibanaを使用してElasticSearchでLuceneおよびKibanaクエリ言語を使用してクエリを実行する

Kibanaを使用してElasticSearchでLuceneおよびKibanaクエリ言語を使用してクエリを実行する

  • ITOps・DevOps
6分で読めます 更新日 Jul 18, 2019

ポイント: Kibanaを使用すると、ユーザーはElasticSearchでLuceneおよびKibanaクエリ言語(KQL)を使用してクエリを実行できます。このガイドでは、JSONクエリの入力方法を詳述し、KQLとLuceneの構文の違いを強調しています。

  • JSON DSLクエリはKibanaで利用できます。
  • KibanaはKQLとLuceneの両方をサポートしており、主要な構文の違いがあります。

私たちはCURLを使ってElasticSearchにクエリを送信する方法について長々と議論しました。今度はKibanaを使ってそれを行う方法を示します。

このブログ投稿をフォローして、ESサーバーにデータを追加できます。

JSONクエリ(別名JSON DSL)は、curlと一緒に使用するものです。しかし、Kibanaでもそれを使用できます。集約、ネスト、および他のクエリでは機能しません。

JSONを使用する場合の違いは、クエリオブジェクトのみを渡すことです。したがって、このcurlクエリでは:

    {"query":{"match":{"geoip.country_name":"Luxembourg"}}}

Kibanaにはこの部分だけを貼り付けます。

    {"match":{"geoip.country_name":"Luxembourg"}}

Kibanaでのクエリの入力

KibanaのDiscoveryタブで、上記のテキストを貼り付け、最初にクエリ言語をKQLからLuceneに変更し、logstash*インデックスパターンを選択します。Kibanaクエリ言語(KBL)については、以下で説明します。

KQLからLuceneにクエリ言語を変更するのを忘れると、次のエラーが表示されます:

    Discover: input.charAt is not a function. (In 'input.charAt(peg$currPos)', 'input.charAt' is undefined)

JSON DSLクエリを入力する最も簡単な方法は、クエリエディタを使用することです。これにより、クエリオブジェクトが自動的に作成されます:

クエリを保存し、名前を付けます:

Kibanaクエリ言語(KBL)とLucene

KibanaではKBLまたはLuceneを使用できます。基本的には同じですが、KBLは簡素化を提供し、スクリプトをサポートしています。

以下は、各クエリ言語での一般的なクエリとその方法です。

KBL Lucene 説明
request:"/wordpress/" request:"/wordpress/" コロン(:)は等しいことを意味します。 引用符は言葉のコレクション、つまりフレーズを意味します。
request:/wordpress/ request:/wordpress/ 1語の場合は引用符は必要ありません。
request:/wordpress/ request:/wordpress/ 1語の場合は引用符は必要ありません。
request:/wordpress/ および response:404 request:/wordpress/ および response:200 KBLでは、ブール演算子を明示的に指定する必要があります。Luceneでは、演算子は演算子として認識されず、テキストの文字列として認識されますが、大文字で書くと演算子として認識されます。
wordpress wordpress ドキュメント内の任意のテキストに基づいて一致します(この例ではwordpress)特定のフィールドではありません。
200または404 200 404 Luceneにorという単語を追加すると、「or」という文字列を含むテキストも含まれるようになります。したがって、オフにするか、キャピタルORを使用してください。
200および404 200 AND 404 Luceneでは論理演算子に大文字を使用します。
geoip.country_name: "Luxembourg" {"match":{"geoip.country_name": "Luxembourg"}} LuceneはJSON DSLクエリ言語をサポートしており、上記のように説明しました。
response:>=200 および response:< =404 response:[200 TO 404] 範囲クエリ
キロバイト > 1 サポートされていません スクリプト化されたフィールド、キロバイトは: if (doc['bytes'].size()==0) { return 0; } return doc['bytes'].value / 1024;

これらの投稿は私自身の意見であり、BMCの立場、戦略、または意見を必ずしも代表するものではありません。

ITOps・DevOpsの関連記事

The Briefを購読する

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ありがとう

あなたはThe Briefに登録されました
The Briefはメインフレームとエンタープライズオーケストレーション—BMC AMIとControl-M—および、両者に関するアナリストの研究、顧客の展開、イベントをカバーしています。