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" }
}
}
末尾の空白などはありません。私には有効に見えます。
それでも同じエラーが発生します。誰が何が起こっているのか分かりますか?