PythonからElasticsearchのIndex/Typeの一覧を取得する
Pocket

ElasticsearchのIndex/Typeを分割する必要があり、クエリを投げる前にIndex/Typeの一覧を取得する必要が出た。で、どうやって取得すればいいかというのだけ念の為残しておく。
残念ながらそのものズバリな関数はライブラリに無いっぽいので、Mapping情報を取得して、そこから抽出する方法になってしまう(connはElasticsearchとの接続用)。

Sponsored Links

...
        # 対象INDEXのmapping情報を取得する(ワイルドカード使えるので、とりあえずここではワイルドカード)
        mapping_data = self.conn.indices.get_mapping(index='*')

        # INDEX,TYPEの一覧を取得する
        type_list = []
        index_list = []
        for k, v in mapping_data.items():
            index_list.append(k)
            type_list.extend(list(v["mappings"].keys()))
            count_mappings = len(list(v["mappings"].keys()))
...

 

まぁ、余計な情報も取得してしまうけど、Mappingならそんなにサイズないので、とりあえずはいいか。

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*