我正在使用 ES - 6.1 和相应的 java 版本的 api。我能够使用 java API 对数据进行索引。我通过 kibana 验证了这一点。所有映射均已正确保存,但当我尝试搜索时出现错误。即使是最基本的搜索也会给我一个空集合。
// client is a reference to the TransportClient instance
SearchResponse searchResponse = this.client.prepareSearch(index).get().
当我尝试通过 getFields() 获取字段并进一步执行 getField(key) 时,我得到一个空指针异常。我尝试了故障排除,发现在响应中没有返回任何对象。以下是我正在做的基本搜索。
// index is the index I am interested to search under.
SearchResponse searchResponse = this.client.prepareSearch(index).get();
这是我在尝试将代码从 1.7.3 Java API 迁移到最新版本时看到的问题。早些时候,我们的实施没有发现任何问题。
我已经阅读了很多关于为此发生的变化的文章,但没有找到适用于我的案例的解决方案。
我已经使用存储映射的每个属性集重新索引了我的数据。我仍然没有得到我感兴趣的字段的响应。字段 Keyset 仍然是空值
以下是映射示例。
"street": {
"type": "text",
"store": true
},
"country": {
"type": "text",
"store": true
},
"city": {
"type": "text",
"store": true
}
---------------Some more fields--------------
从调试器附加我的变量的屏幕截图。}
这是我在进行故障排除时得到的每个命中的响应。我在该索引中获得了正确的点击数。从调试器附加我的变量的屏幕截图。hits是包含来自以下代码的响应的变量。
hits = searchResponse.getHits()
感谢您的帮助。
-阿吉特