我正在使用框架Dropwizard在Java中开发REST web服务。有些资源只是在Elasticsearch索引中搜索数据。在那里我遇到了一个奇怪的问题。
从org.elasticsearch.action.search
使用SearchRequestBuilder
时,我无法执行搜索请求。这是因为execute()
方法不"可用",因为NetBeans(8.0.2)通过告诉我无法找到符号。请看下面的例子:
SearchResponse response = client.prepareSearch("books")
.setTypes("book")
.setQuery(QueryBuilders.termQuery("year", 2015))
.setFrom(0).setSize(60)
.execute() // !!
.actionGet();
NetBean的消息:
找不到符号
symbol: method execute()
location: class SearchRequestBuilder
我可以在Elasticsearch上执行索引client.prepareUpdate()
并获得client.prepareGet()
请求(客户端类型为org.elasticsearch.client.Client
),因此它被正确配置和设置,并且依赖项工作正常。然而,当涉及到上述搜索请求时,我无法执行请求,因为NetBeans显然无法解决execute()
方法。
我从来没有经历过这样的行为,所以我很无知。有什么想法是错误的或建议我如何执行Elasticsearch不同的搜索查询?
我使用dropwizard-core-0.8.1, dropwizard-elasticsearch-0.8.0-1, elasticsearch-1.6.0.
原来是NetBeans编辑器的问题。不知怎的,编辑器没有得到SearchRequestBuilder
的类/包和Javadoc的正确引用,因此使项目无法正确构建。
解决方案:删除NetBeans缓存
您可以通过NetBeans> About NetBeans查看参数缓存目录来查看NetBeans保存缓存的位置。只需重命名或删除该目录并重新启动NetBeans。编辑器现在获得了execute()
的正确方法定义。