我正在尝试执行如下所示的基于 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);
最佳答案
试试这个
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=
参数中发送的任何内容都需要遵循查询字符串 query syntax rules并且两个约束使用 AND
运算符而不是 &
进行 AND 运算,如下所示:updatedBy:XX AND nodeId:YY
您要构造的 URI 如下:
"http://localhost:9200/twitter/twitter/_search?q=updatedBy:XX AND nodeId:YY"
关于java - 基于 Elasticsearch URI 的搜索查询,无需源字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38837215/