java - 基于 Elasticsearch URI 的搜索查询,无需源字段

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

最佳答案

试试这个

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/

相关文章:

java - JVM 内存使用情况,一个带线程的 JVM 还是四个 JVM 用于我的四个应用程序?

elasticsearch - Spring Data ElasticSearch-无法连接到节点

elasticsearch - Elasticsearch是否仅对_search端点或全部支持GET over POST?

elasticsearch - elasticsearch版本编号算法

elasticsearch - 如何在Elasticsearch中进行屏蔽查询?

Java readline() 保持套接字打开

java - Collections.binarySearch 的这两个通用签名有何不同?

java - 了解工作单元

java - 如何通过 JMX 连接到远程 Docker 容器

elasticsearch - 多字段搜索查询字符串中的同义词