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

时间:2015-04-06 17:52:46

标签: java elasticsearch

通过查看人员代码,您似乎可以使用setSource() / setExtraSource()setQuery()设置查询。

根据文件:

public SearchRequestBuilder setQuery(String query)

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

public SearchRequestBuilder setSource(String source)

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

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

由于

1 个答案:

答案 0 :(得分:1)

我认为用于直接设置搜索词的setQuery(字符串查询)。 setSource(String source)需要一个有效的JSON来请求Elasticsearch(https://github.com/elastic/elasticsearch/blob/master/src/main/java/org/elasticsearch/action/search/SearchRequestBuilder.java#L835)。

如果你想自己构建搜索请求JSON,那么你使用setSource。