2013-11-23 26 views
10

私のテストからESにリクエストを送信しようとしています。 I applied mapping and inserted documents to ES index named 'gccount_test' from the same test。私は非常に単純なクエリは、私がテストしたいmemberという名前のファイルに維持している。elasticsearch - [クエリ]にクエリが登録されていません]

{ 
    "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) 

私は

[group: 'org.elasticsearch', name: 'elasticsearch', version: '0.90.2'] 

elasticsearch 0.90.2 dependecyを使用しています同じことが(以下、スナップショット)

enter image description here

からクエリをロードしている間の問題です実際の環境では正常に実行さファイルの奇形や何が原因ですか?

答えて

24

例外は基本的に「queryという既知のクエリタイプがありません」という意味です。 、あなたのクライアントは、クエリのJSON表現をダンプすることができた場合は

{ 
    "query" : { 
     "query" : { 
      "match_all" : {} 
     } 
    } 
} 

助けることができる:私はあなたの生成されたクエリは、実際にこのようになり、あなたのクライアントライブラリは自動的にトップレベルqueryプロパティを挿入していることを推測していますデバッグ時のロット

テキストファイルからquery部分を削除して、それがmatch_allというクエリになるようにしてください。それがうまくいくかどうかを確認してください。

+1

不正なクエリをデバッグするために使用できる検証APIも同梱されています。http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-validate.html – lfender6445

関連する問題