【Ruby】配列を検索条件にしたーい!【Elasticsearch】

目次

本日は業務上で陥った危機(ピンチ)
Elasticsearchで配列をインデックスし検索する方法について
記事を書きたいと思います。

Elasticsearchには配列のフィールドタイプが存在していないが
データ型が統一されている場合、複数のデータを保持する
integer型 -> [1,2,3]

keyword型 -> ["hoge","fuga","foo"]

混合させることは出来ない
[1,"fuga",3] <- ❌

オブジェクトはnestedと呼ばれるフィールドで扱う。

配列を使った検索にはtermsクエリなるものが存在し。
完全一致かつOR条件で配列の要素が検索される。

しかし実装では
完全一致かつAND条件で配列の要素が検索したかったため
上記のものを改変し、Ruby側でeachのループを回すことで対応した

もっとスマートな書き方があるはずなので
学び次第加筆修正いたします。