基于Elasticsearch URI的搜索查询,不包含源字段

时间:2016-08-08 19:37:12

标签: java elasticsearch

我正在尝试执行如下所示的基于URI的查询。但我没有看到我传递的搜索参数的任何影响。而且我想禁用_source = false。你能帮我查询一下吗?我正在使用Java来使用Java.net包执行相同的操作。无论我传递什么搜索参数,此查询都会返回所有内容。

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

Java代码:

   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);

1 个答案:

答案 0 :(得分:1)

试试这个

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();

问题在于q=参数中发送的内容需要遵循查询字符串查询syntax rules,并且使用AND运算符而不是&来对两个约束进行AND运算这个:updatedBy:XX AND nodeId:YY

您要构建的URI是:

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