24

I am trying to send request to ES from my tests. I applied mapping and inserted documents to ES index named 'gccount_test' from the same test. I have a very simple query maintained in a file named member that I want to test.

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

My test method is

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 
    }

Unfortunately, I get following error.

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)

I am using elasticsearch 0.90.2 dependecy

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

Same thing runs fine in real environment(snapshot below)

enter image description here

Is the problem with while loading query from file that caused it's malformation or what?

2 Answers 2

53

The exception basically means "There is no known query type called query". I'm guessing that your client library is automatically inserting the top-level query property, so your generated query actually looks like this:

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

If your client can dump the JSON representation of the query, that can help a lot in debugging.

Try removing the query portion from your text file so that it is just the match_all query, see if that works for you.

Sign up to request clarification or add additional context in comments.

1 Comment

ES also ships with a validation api you can use to debug malformed queries elasticsearch.org/guide/en/elasticsearch/reference/current/…
0

your query string should be

String query = "{\"match_all\":{}}";

you can see from here

https://discuss.elastic.co/t/parsingexception-in-elastic-5-0-0/64626

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.