BSearch-QueryBuilder は、高度なクエリプラグインであり、フロントエンドのプラグインでもあります。 BSearch-QueryBuilder プラグインを使用すると、データ照会用の複雑なドメイン固有言語 (DSL) 文を記述する必要がなくなります。 視覚化された方法で複雑なクエリを作成できます。 このドキュメントでは、BSearch-QueryBuilder プラグインを使用してデータを照会する方法について説明します。

特徴

BSearch-QueryBuilder は次の機能をサポートしています。
  • わかりやすい:BSearch-QueryBuilder は UI コンポーネントです。クリックして選択することで Elasticsearch DSL クエリを作成できます。 コーディングなしで検索条件をカスタマイズできます。 これにより、複雑な DSL 文を学習するコストを節約できます。 また、開発者が DSL 文を作成し、検証するのにも役立ちます。
  • 使いやすい:定義したすべてのクエリは Kibana に保存されるため、いつでも使用できます。
  • コンパクト:BSearch-QueryBuilder は約 14 MB のディスク容量しか消費しません。 BSearch-QueryBuilder はメモリに常駐しません。 これは、Kibana および Elasticsearch のパフォーマンスに悪影響を及ぼさないことを意味します。
  • 安全で信頼性が高い:BSearch-QueryBuilder は、ユーザーデータの書き換え、保存、転送を行いません。 BSearch-QueryBuilder のソースコードは、Alibaba Cloud Security によって監査されています。

背景

Query DSL は、SQL タイプセーフクエリを定義するために使用されるオープンソースの Java フレームワークです。 文を記述する代わりに、API 操作を使用してクエリを送信できます。 現在、Query DSL は JPA、JDO、SQL、Java コレクション、RDF、Lucene、および Hibernate Search をサポートしています。

Elasticsearch は、クエリを定義するための完全な JSON クエリ DSL を提供します。 QueryDSL ではさまざまなクエリ式を用意しています。 一部のクエリは、ブールクエリなどの他のクエリをラップでき、 コンスタントスコアクエリなどのフィルターをラップできます。 また、フィルターされたクエリなど、他のクエリとフィルターを同時にラップできます。 Elasticsearch がサポートするクエリ式とフィルターを組み合わせて、複雑なクエリを作成し、返された結果をフィルター処理できます。 DSL を習得できるのは少数のプログラマーだけで、 DSL 文を書くときに間違えてしまう可能性もあります。 QueryBuilder は、Elasticsearch DSL の知識があまりないユーザーや、DSL クエリを効率的に作成したいユーザーに役立ちます。BSearch-QueryBuilder の背景

準備

BSearch-QueryBuilder プラグインを使用する前に、Elasticsearch インスタンスを購入 する必要があります。 インスタンスのバージョンは、 V6.3 または V6.7 でなければなりません。 Elasticsearch V5.5.3 はサポートしていません。Elasticsearch インスタンスを購入する
既存のインスタンスを使用することもできます。 インスタンスのバージョンが要件を満たしていない場合は、インスタンスをアップグレードしてください。

BSearch-QueryBuilder をインストールする

BSearch-QueryBuilder を使用する

  1. Elasticsearch インスタンスの [データ可視化] ページに戻り、Kibana セクションの [コンソール]をクリックします。
  2. Kibana コンソールのユーザー名とパスワードを入力し、 [ログイン] をクリックします。

    デフォルトのユーザー名は、 elastic です。 インスタンス作成時に指定したパスワードを入力します。

  3. Kibana コンソールで、 [Discover] > [Query] を選択します。
    重要 クエリを作成する前に、インデックスパターンを作成したことを確認してください。 Kibana コンソールでインデックスパターンを作成するには、 [Management] をクリックし、Kibana[Index Patterns] > [Create index pattern] を選択します。そして、指示に従ってインデックスパターンを作成します。
  4. クエリ領域で、検索条件とフィルターを選択し、 [送信] をクリックします。
    クエリを送信すると、クエリ結果が表示されます。

    クエリ領域で、 アイコンをクリックして検索条件を追加し、 アイコンをクリックして条件のフィルターを追加します。また、 アイコンをクリックして、検索条件またはフィルターを削除します。

    クエリの作成方法の詳細については、 「」をご参照ください。

BSearch-QueryBuilder プラグインを使用すると、regexp クエリ、ブールクエリ、範囲クエリなど、さまざまなクエリを作成できます。
  • Regexp クエリ
    次の図に示すように、あいまい一致の email 条件が追加されます。 email 条件は、iga キーワードを含むすべての E メールアドレスに一致します。
    次の図は、返された結果を示しています。
  • ブールクエリ
    次の図に示すように、 index 条件は tryme_book に設定されます。 複数のフィルターを含む OR 条件も追加され、 type によってデータがフィルターされます。 [type] フィルターは[学部の教材][数学][外国語教育][学部の教科書] に設定されています 。
    次の図は、返された結果を示しています。
  • 範囲クエリ
    範囲クエリを使用すると、日付でデータを検索できます。 次の図に示すように、 範囲条件は utc_time フィールドに基づいて、データをフィルターするために使用されます。 指定された時間範囲内に作成されたデータエントリのみが返されます。 指定される時間範囲は次のとおりです。[現在の時間 - 240日、現在の時間]
    次の図は、返された結果を示しています。
これらすべての検索条件とフィルターを使用して、次のように複雑なクエリを定義できます。
クエリの実際の DSL 文は次のとおりです。

前の例で示したように、BSearch-QueryBuilder は Elasticsearch クエリの複雑さを大幅に簡素化します。