java - 弹性 SearchRequestBuilder 中的 setQuery() 和 setSource() 有什么区别?

标签 java elasticsearch

从人们的代码来看,您似乎可以使用 setSource()/setExtraSource()setQuery() 设置查询.

根据文档:

public SearchRequestBuilder setQuery(String query)

使用原始搜索查询构造一个新的搜索源构建器。

public SearchRequestBuilder setSource(String source)

将请求的来源设置为 json 字符串。请注意,设置搜索类型以外的任何内容都会导致此源被覆盖,请考虑使用 setExtraSource(String)

Query 和 Source 有什么区别? 我什么时候使用它们?

谢谢

最佳答案

我认为 setQuery(string query) 用于直接设置搜索词。 setSource(String source) 需要有效的 JSON 才能在 Elasticsearch ( https://github.com/elastic/elasticsearch/blob/master/src/main/java/org/elasticsearch/action/search/SearchRequestBuilder.java#L835 ) 请求。

因此,如果您想自己构建搜索请求 JSON,请使用 setSource。

关于java - 弹性 SearchRequestBuilder 中的 setQuery() 和 setSource() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29476646/

相关文章:

java - SQL 连接悬空 : Where am I not correctly closing up connections correctly?

elasticsearch - 是否可以使用 elasticsearch 搜索特定范围?

elasticsearch - Nest QueryContainer 用法

csv - Logstash解析多行CSV文件

java - 为什么我不能将此运行时创建位图作为声明到 fragment 中的 ImageView 的内容?

java - 如何实例化 MyList 对象

java - 使用参数化 Junit 测试获取运行时异常

elasticsearch - 在elasticsearch-ruby中使用percolate进行批量索引

java - Elasticsearch:按数字字段排序

java - 异常和文件 I/O