PythonからElasticsearchに_typeを明記せずにクエリを実行する(prefix指定)

Elasticsearch 5.3に対してPythonからアクセスする際、Indexはワイルドカード指定できるのだけど、Typeについてはワイルドカードでの指定ができない。
一応、カンマ区切りで複数の指定は可能なのだけど、あまりにTypeの数が多くなるとhttpのエラーでクエリを実行できなくなってしまう。で、なんかいい方法ないのかなと調べていたのだけど、どうやらクエリ側にprefixとして_typeを定義してやることで、ワイルドカードでの指定と同じようなことができるようだ。

Sponsored Links

query = {
    'bool': {
        'must':[
            'prefix': {'_type': {'value': <TypeのPrefix>  } }
            ]
         },
         ...
    }
}

 

この場合、クエリ実行時に_typeは指定しないようにする必要があるけど、ひとまずこれでワイルドカード指定と同じような挙動をしてくれた。

 

 


Written by blacknon

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

Leave a Comment

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

*