elasticsearch – 没有为注册的查询]
我试图从我的测试中向ES发送请求。 我将映射和插入的文档应用于同一测试中名为’gccount_test’的ES索引 。 我在一个名为member
的文件中维护了一个非常简单的查询,我想测试它。
{ "query" : { "match_all" : {} } }
我的测试方法是
public void testMemberQuery(){ final Charset CHARSET = StandardCharsets.UTF_8 //load query byte[] bytes = Files.readAllBytes(Paths.get(MEMBER_QUERY_PATH)) String query = CHARSET.decode(ByteBuffer.wrap(bytes)).toString() println "QUERY => ${query}" SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder() searchSourceBuilder.query(query) SearchRequestBuilder searchRequestBuilder = client.prepareSearch(INDEX_NAME) //ClusterAdminClient adminClient = client.admin().cluster() //searchRequestBuilder.setTypes(Constants.ESTYPE_MEMBER) //println "CLUSTER => ${adminClient}" searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH); searchRequestBuilder.internalBuilder(searchSourceBuilder) SearchResponse searchResponse = searchRequestBuilder.execute().actionGet() println "Search Response => ${searchResponse.toString()}" //blah blah }
不幸的是,我得到了以下错误。
Failed to execute phase [query_fetch], total failure; shardFailures {[1][gccount][0]: SearchParseException[[gccount_test][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"ewogICAgInF1ZXJ5IiA6IHsgCiAgICAgICAgICAibWF0Y2hfYWxsIiA6IHt9IAogICAgIH0KfQ=="}]]]; nested: QueryParsingException[[gccount_test] No query registered for [query]]; } org.elasticsearch.action.search.SearchPhaseExecutionException: Failed to execute phase [query_fetch], total failure; shardFailures {[1][gccount_test][0]: SearchParseException[[gccount_test][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"ewogICAgInF1ZXJ5IiA6IHsgCiAgICAgICAgICAibWF0Y2hfYWxsIiA6IHt9IAogICAgIH0KfQ=="}]]]; nested: QueryParsingException[[gccount_test] No query registered for [query]]; } at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.onFirstPhaseResult(TransportSearchTypeAction.java:261) at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$3.onFailure(TransportSearchTypeAction.java:214) at org.elasticsearch.search.action.SearchServiceTransportAction.sendExecuteFetch(SearchServiceTransportAction.java:246) at org.elasticsearch.action.search.type.TransportSearchQueryAndFetchAction$AsyncAction.sendExecuteFirstPhase(TransportSearchQueryAndFetchAction.java:75) at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:206) at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:193) at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$2.run(TransportSearchTypeAction.java:179) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722)
我正在使用elasticsearch 0.90.2 dependecy
[group: 'org.elasticsearch', name: 'elasticsearch', version: '0.90.2']
在真实环境中运行良好(下面的快照)
从文件加载查询导致它的错误或什么时出现问题?
该exception基本上意味着“没有称为查询的已知查询类型”。 我猜你的客户端库是自动插入顶级query
属性,所以你生成的查询实际上是这样的:
{ "query" : { "query" : { "match_all" : {} } } }
如果您的客户端可以转储查询的JSON表示,那么这可以帮助调试很多。
尝试从文本文件中删除query
部分,以便它只是match_all
查询,看看它是否适合您。
- 在ElasticSearch中使用Java API时如何从JSON DSL构造QueryBuilder?
- Elasticsearch 5如何开始编写本机Java插件
- Elasticsearch的Liquibase或Flyway数据库迁移替代方案
- elasticsearch java批量大小
- 如何为Elasticsearch自定义插件编写测试?
- Spring-Data-Elasticsearch设置:Spring无法找到配置文件?
- ElasticSearch Java API:NoNodeAvailableException:没有可用的节点
- ElasticSearch仅返回具有不同值的文档
- ElasticSearch索引问题TransportSerializationException