はてだBlog(仮称)

私的なブログど真ん中のつもりでしたが、気づけばWebサイト系のアプリケーション開発周りで感じたこと寄りの自分メモなどをつれづれ述べています。2020年6月現在、Elasticsearch、pandas、CMSなどに関する話題が多めです。...ですが、だんだんとより私的なプログラムのスニペット置き場になりつつあります。ブログで述べている内容は所属組織で販売している製品などに関するものではなく、また所属する組織の見解を代表するものではありません。

Elasticsearchで検索〜pandasのDataFrameに格納(私的なスニペット)

Elasticsearchとpandasという組み合わせでいうと、Elasticsearchの公式サイトでも紹介があるeland | Elasticなのかなと思います。

しかしながら、ElandでElasticsearchの検索クエリをかませて、それをDataFrameに入れる方法が(おそらくそのような機能を具備しているように見えたものの掘り下げ不足なのか)パッと見わかりませんでした。

てことで、Pythonクライアントで自分が欲しいのはこの程度だからいいやということで代用したサンプルコードのメモです。

確認した、 Elasticsearchのバージョンは6.8です。 pandasは、1.01 です。

gist5b5a14c739067d7c43c03d0e24695126

参考

1) この例は、次の記事で作成したインデックスを対象にしています。

itdepends.hateblo.jp

2) 発行しているクエリは、検索クエリ(term)によるシンプルなクエリと、Aggregationsのsignificant_termsクエリです。

3) この記事を書いた隠れたモチベーションがあります。

私が見逃していただけかもしれませんが、長らく公式サイトでは、Elasticsearchの検索結果のJSONフォーマットに関してはっきりした記述が見られませんでした。

... というと言い過ぎなのかもしれませんが、とりあえず、7系の公式ドキュメントでは、次のセクションで、hitsの構造と、各配下のプロパティについて明記されているようなので、それを見つけてちょっと嬉しくなったというところでした。

www.elastic.co

検索結果のJSONフォーマットについては、実際に現物をさわっていれば、経験的に分かります。

また、断片的に公式ドキュメントの中で何度も事例が出てくるので、これといった不自由はありません。

しかし、公式に明記してあると、誰かに紹介しやすかったりしていろいろありがたいですね。