我有一个Odata查询: /ecommerceadmin/ODataService.svc/search?$select=status&$filter=id eq'test.com'and name eq'abc'
如何在弹性搜索中实现代码以相应地获取数据。应该使用 SearchSourceBuilder 中的哪些方法?
答案 0 :(得分:0)
您可以轻松地通过一个match
和一个term
查询来解决这个问题:
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
部分