2

我正在尝试使用JEST 客户端来搜索位于远程的 ElasticSearch 索引

但是我遇到了一个问题 - 每一个查询,无论是使用各种构建器还是默认的 ES 查询构造,所有内容都会返回 com.google.gson.stream.MalformedJsonException

代码:

String URL = "http://api.exiletools.com:80";
String API_KEY = "DEVELOPMENT-Indexer";

 JestClientFactory factory = new JestClientFactory();
        factory.setHttpClientConfig(new HttpClientConfig.Builder(URL)
                .defaultCredentials("apikey", API_KEY)
                .build());
 JestClient client = factory.getObject();

  qb = QueryBuilders
                    .boolQuery()
                    .must(QueryBuilders.termQuery("attributes.league", "Standard"))
                    .must(new TermQueryBuilder("attributes.equipType", "Ring"))
                    .must(new TermQueryBuilder("shop.verified", "yes"));
  searchSourceBuilder = new SearchSourceBuilder();
  searchSourceBuilder.query(qb);

  query = searchSourceBuilder.toString();

  search = new Search.Builder(query).build();

  client.execute(search); // Here I get the error

作为最终测试,我只是复制了从 Jest 集成测试示例中可以找到的最小查询,并替换了那里的搜索词,如下所示:

        query = "{\n"
                + "    \"query\" : {\n"
                + "        \"term\" : { \"shop.chaosEquiv\" : \"167\" }\n"
                + "    }\n"
                + "}";

从输出流复制时,此查询如下所示:

{
    "query" : {
        "term" : { "shop.chaosEquiv" : "167" }
    }
}

没有尾随空格或任何东西,对我来说看起来有效。

仍然得到同样的错误。谁能告诉发生了什么?

4

0 回答 0