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

What is the difference between setQuery() and setSource() in elastic SearchRequestBuilder?

从人们的代码来看,似乎可以使用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) 上请求。

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