Elasticsearch API:SearchQuery 和 SearchResponse 之间的区别?
Elasticsearch API: difference between SearchQuery and SearchResponse?
在我的 Spring-Data-Elasticsearch 应用程序中,我尝试使用 SearchQuery 根据一些给定的 QueryBuilder 和 FilterBuilder 在 Elasticsearch 中进行搜索。
但是,对我来说,Elasticsearch docs talk about SearchResponse 似乎与 SearchQuery 的工作相同。
我不明白 SearchQuery 和 SearchResponse 之间的区别。
有人可以指出区别吗?
如果您将查询对象传递给 elasticsearch 客户端并执行查询,您会得到响应。
响应类型取决于查询类型。
executed SearchQuery object -> SearchResponse object
executed IndexQuery object -> IndexResponse object
等等...
在您 link 的代码片段中,SearchQuery 对象是使用 prepareSearch 方法构建的。然后由客户端执行。
SearchResponse response =
// Query creation part
client.prepareSearch("index1", "index2")
.setTypes("type1", "type2")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(QueryBuilders.termQuery("multi", "test"))
.setPostFilter(FilterBuilders.rangeFilter("age").from(12).to(18))
.setFrom(0).setSize(60).setExplain(true)
//query execution part
.execute()
.actionGet();
搜索查询是您发送给 Elastic 的查询,搜索响应是 Elasticsearch 对该查询的响应。
例如,这可能是您的查询:
POST /your_index/_search
{
"query": {
"term": {
"available": {
"value": true
}
}
}
以及来自 ES 的可能查询响应:
{
"took": 99,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 58188,
"max_score": 0.99998283,
"hits": [
...
]
}
}
在我的 Spring-Data-Elasticsearch 应用程序中,我尝试使用 SearchQuery 根据一些给定的 QueryBuilder 和 FilterBuilder 在 Elasticsearch 中进行搜索。
但是,对我来说,Elasticsearch docs talk about SearchResponse 似乎与 SearchQuery 的工作相同。
我不明白 SearchQuery 和 SearchResponse 之间的区别。 有人可以指出区别吗?
如果您将查询对象传递给 elasticsearch 客户端并执行查询,您会得到响应。 响应类型取决于查询类型。
executed SearchQuery object -> SearchResponse object
executed IndexQuery object -> IndexResponse object
等等...
在您 link 的代码片段中,SearchQuery 对象是使用 prepareSearch 方法构建的。然后由客户端执行。
SearchResponse response =
// Query creation part
client.prepareSearch("index1", "index2")
.setTypes("type1", "type2")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(QueryBuilders.termQuery("multi", "test"))
.setPostFilter(FilterBuilders.rangeFilter("age").from(12).to(18))
.setFrom(0).setSize(60).setExplain(true)
//query execution part
.execute()
.actionGet();
搜索查询是您发送给 Elastic 的查询,搜索响应是 Elasticsearch 对该查询的响应。
例如,这可能是您的查询:
POST /your_index/_search
{
"query": {
"term": {
"available": {
"value": true
}
}
}
以及来自 ES 的可能查询响应:
{
"took": 99,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 58188,
"max_score": 0.99998283,
"hits": [
...
]
}
}