Elasticsearch を照会するために、このインターフェースを Spring で定義しています。フィルタリングを行うために @Query アノテーションを追加しました。
public interface ObjectElasticSearch extends ElasticsearchRepository<ElasticObject, String> {
@Query("{\"query\" : {\"filtered\" : {\"filter\" : { \"and\" : [ { \"term\" : { \"firstName\" : \":firstName\" }}, { \"term\" : { \"lastName\" : \"Baggins\" }} ] }}}}")
List<ElasticObject> findByDocFirstNameAndDocLastName(@Param("firstName") String firstName,
@Param("lastName") String lastName);
};
@Query アノテーションは完全に無視されます。ご覧のとおり、姓をハードコーディングしてみましたが、クエリの結果には影響しません。クエリ文字列の中かっこを削除しても、エラーは発生しません。クエリは引き続き機能し、フィルタリングは無視され、すべての一致が返されます。
誰かが私がここで間違っていることを理解するのを手伝ってくれますか?