Abhi.G
Abhi.G

Reputation: 2221

Elasticsearch URI based search query without source fields

I am trying to execute a URI based query like below. But i don't see any effect of the search parameters i am passing. And also i want to disable _source=false. Can you help me with the query. I am using java to perform the same using Java.net packages. This query return everything no matter what search parameter i pass.

URI: "http://localhost:9200/twitter/twitter/_search?updatedBy=XX&node=YY"

Java Code:

   String charset = "UTF-8"; 
            String updatedBy = "XX";
            String node = "YY";

    String query = String.format("updatedBy:%s&nodeId:%s",
            URLEncoder.encode(updatedBy, charset),
            URLEncoder.encode(nodeId, charset));
    System.out.println(searchEsUrl + "?q=" + query);

    URLConnection connection = new URL(searchEsUrl + "?q=" + query).openConnection();
    connection.setRequestProperty("Accept-Charset", charset);

Upvotes: 0

Views: 390

Answers (1)

Val
Val

Reputation: 217394

Try this instead

String query = String.format("updatedBy:%s+AND+nodeId:%s",
        URLEncoder.encode(updatedBy, charset),
        URLEncoder.encode(nodeId, charset));
URLConnection connection = new URL(searchEsUrl + "?_source=false&q=" + query).openConnection();

The issue was that whatever is sent in the q= parameter needs to follow the query string query syntax rules and two constraints are ANDed using the AND operator not & like this: updatedBy:XX AND nodeId:YY

The URI you want to construct is thus:

"http://localhost:9200/twitter/twitter/_search?q=updatedBy:XX AND nodeId:YY"

Upvotes: 1

Related Questions