0

エラスティック検索で SQL クエリを複製しようとしていinます...次のようなものselect * from products where id in ('123, '345');

私は以下のようなものを持っています -

Set<String> searchIds = new HashSet<String>();
searchIds.add("123");
searchIds.add("456");

response = client.prepareSearch("id_index")
                .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
                .setQuery(QueryBuilders.termsQuery("product_id", searchIds))
                .setFrom(0).setSize(50).setExplain(false)
                .execute().actionGet();
hits = response.getHits();
hits.forEach((h) -> {
    h.getSource().entrySet().stream().forEach((e)->{
        System.out.println(e.getKey()+" : "+String.valueOf(e.getValue()).replace("\n", "").replace("\t", ""));
    });
});
System.out.println("Response : "+response.toString());

私が最後に得ている応答System.out.printlnは次のとおりです。

Response : {
  "took" : 14,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }
}

製品IDを持つ2つの製品があることは確かであり、123Kibana345経由でそれらを見ることができました. しかし、上記のコードはヒットを返しません。SQLINクエリを正しい方法で複製していますか?

4

0 に答える 0