\

PythonとElasticsearch DSLを用いて範囲クエリを作成する方法について説明します。Elasticsearch DSLは、Elasticsearchの高レベルPythonクライアントで、直観的に検索クエリを作成することができます。

まず、Elasticsearchと接続します。次に、Searchオブジェクトを作成し、フィルタ条件を記述します。この例では、valueフィールドの値が1以上100未満のドキュメントをフィルタリングします。

from elasticsearch_dsl import Search

search = Search(using=elastic, index=index)  # Search オブジェクトの作成
search = search.filter("range", value={"gte": 1, "lt": 100})  # フィルタ条件の記載

次に、集計を行います。この例では、hogeフィールドとfugaフィールドでグループ化し、それぞれのvalueフィールドの合計を計算します。

from elasticsearch_dsl import A

# Aggregation オブジェクトの作成
aggs_hoge = A("terms", field="hoge", size=10).metric('sum_value', 'sum', field='value')
aggs_fuga = A("terms", field="fuga", size=10).metric('sum_value', 'sum', field='value')

# Aggregation オブジェクトを Search オブジェクトに紐付ける
search.aggs.bucket("aggs_name_hoge", aggs_hoge)
search.aggs.bucket("aggs_name_fuga", aggs_fuga)

response = search.execute()

最後に、結果を取得します。aggs_name_hogeaggs_name_fugaのバケットから集計結果を取得できます。

response.aggregations.aggs_name_hoge.buckets  # [{'key': 1, 'doc_count': 2, 'sum_value': {'value': 7.0}}, {'key': 2, 'doc_count': 2, 'sum_value': {'value': 11.0}}]
response.aggregations.aggs_name_fuga.buckets  # [{'key': 1, 'doc_count': 2, 'sum_value': {'value': 8.0}}, {'key': 2, 'doc_count': 2, 'sum_value': {'value': 10.0}}]

以上がPythonとElasticsearch DSLを用いた範囲クエリの作成方法です。この方法を用いると、直観的に検索クエリを作成し、データを効率的に分析することができます。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です