我正在为我的 Android 应用程序使用 Jest,这是一个用于 Elasticsearch 的 Java Http REST 客户端。根据本教程构建食谱搜索引擎,我想从 android 搜索食谱。
在使用终端的简单搜索时,例如
curl -XPOST http://192.168.1.47:9200/recipes/recipe/_search -d '{"query": {"match": {"ingredients": "salmon"}}}' | json_pp
给我正确的结果,无论查询是什么,使用 Jest 都会给我所有的文档。
我在 Android 中的代码段:
clientConfig = new DroidClientConfig.Builder("http://192.168.1.47:9200").build();
clientFactory = new JestClientFactory();
clientFactory.setDroidClientConfig(clientConfig);
client = clientFactory.getObject();
String query = "{\"query\": {\"match\": {\"ingredients\": \"salmon\"}}}";
Search search = new Search.Builder(query)
.addIndex("recipes")
.addType("recipe")
.build();
try {
SearchResult result = client.execute(search);
Log.d(TAG, result.getJsonObject().toString());
} catch (IOException e) {
e.printStackTrace();
}
问题出在哪里?就像查询不包含在 POST 请求的数据中一样。