本文介绍了需要同时使用$ select和$ filter实现一个弹性搜索查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个Odata查询:/ecommerceadmin/ODataService.svc/search?$select=status&$filter=id eq'test.com'和名称eq'abc'
I have a Odata Query :/ecommerceadmin/ODataService.svc/search?$select=status&$filter=id eq 'test.com'and name eq 'abc'
如何在弹性搜索中实现代码以相应地获取数据.应使用 SearchSourceBuilder 中的哪种方法?
How can I implement the code in elastic search to get the data accordingly.What method in SearchSourceBuilder should be used?
推荐答案
您可能可以轻松地通过一个match
和一个term
查询,像这样:
You can probably easily get away with one match
and one term
query like this:
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.index.query.QueryBuilders.*;
BoolQueryBuilder query = QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("name", "abc")) // 1.
.filter(QueryBuilders.termQuery("id", "test.com")); // 2.
SearchResponse response = client.prepareSearch("ecommerce_index")
.setTypes("ecommerce_type")
.setQuery(query)
.setFetchSource(new String[]{"status"}, null) // 3.
.setFrom(0)
.setSize(10)
.execute()
.actionGet();
在上面的代码中:
- 负责
name eq 'abc'
$ filter - 负责
id eq 'test.com'
$ filter - 照顾
$select=status
部分
- takes care of the
name eq 'abc'
$filter - takes care of the
id eq 'test.com'
$filter - takes care of the
$select=status
part
这篇关于需要同时使用$ select和$ filter实现一个弹性搜索查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!