【问题标题】:Elasticsearch API: difference between SearchQuery and SearchResponse?Elasticsearch API:SearchQuery 和 SearchResponse 之间的区别?
【发布时间】:2015-08-17 19:19:25
【问题描述】:
根据一些给定的 QueryBuilder 和 FilterBuilder,在我的 Spring-Data-Elasticsearch 应用程序中,我正在尝试使用 SearchQuery 来搜索 Elasticsearch。
但是,在我看来,Elasticsearch docs talk about SearchResponse 的工作似乎与 SearchQuery 相同。
我不明白 SearchQuery 和 SearchResponse 之间的区别。
有人能指出区别吗?
【问题讨论】:
标签:
elasticsearch
spring-data-elasticsearch
【解决方案1】:
如果您将查询对象传递给 elasticsearch 客户端并执行查询,您会得到响应。
响应类型取决于查询类型。
executed SearchQuery object -> SearchResponse object
executed IndexQuery object -> IndexResponse object
等等……
在链接的代码 sn-p 中,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();
【解决方案2】:
搜索查询是您发送给 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": [
...
]
}
}