在Java Elasticsearch SearchRequestBuilder中找不到方法execute()

时间:2015-07-21 13:22:17

标签: java netbeans elasticsearch dropwizard

我正在使用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。

1 个答案:

答案 0 :(得分:1)

原来是NetBeans编辑器问题。不知怎的,编辑器没有得到SearchRequestBuilder的类/包和Javadoc的正确引用,因此无法正确构建项目。

解决方案:删除NetBeans的缓存。

您可以通过转到 NetBeans>来查看NetBeans保留其缓存的位置。关于NetBeans 并查找参数缓存目录。只需重命名或删除此目录并重新启动NetBeans。编辑器现在为execute()获取正确的方法定义。