我正在使用Dropwizard框架在Java上开发REST Web服务。有些资源只会搜索Elasticsearch索引中的数据。那是我遇到一个奇怪问题的地方。
使用SearchRequestBuilder
中的org.elasticsearch.action.search
时,我无法执行搜索请求。这是因为execute()
方法不可用,因为NetBeans(8.0.2)通过告诉我无法找到符号。见这个例子:
SearchResponse response = client.prepareSearch("books")
.setTypes("book")
.setQuery(QueryBuilders.termQuery("year", 2015))
.setFrom(0).setSize(60)
.execute() // !!
.actionGet();
NetBean的消息:
找不到符号
符号:方法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。
答案 0 :(得分:1)
原来是NetBeans编辑器问题。不知怎的,编辑器没有得到SearchRequestBuilder
的类/包和Javadoc的正确引用,因此无法正确构建项目。
解决方案:删除NetBeans的缓存。
您可以通过转到 NetBeans>来查看NetBeans保留其缓存的位置。关于NetBeans 并查找参数缓存目录。只需重命名或删除此目录并重新启动NetBeans。编辑器现在为execute()
获取正确的方法定义。