【发布时间】:2016-10-30 18:40:14
【问题描述】:
我有一个 Odata 查询: /ecommerceadmin/ODataService.svc/search?$select=status&$filter=id eq 'test.com'and name eq 'abc'
如何在弹性搜索中实现代码以相应地获取数据。应该使用SearchSourceBuilder中的什么方法?
【问题讨论】:
标签: java elasticsearch odata filtering
我有一个 Odata 查询: /ecommerceadmin/ODataService.svc/search?$select=status&$filter=id eq 'test.com'and name eq 'abc'
如何在弹性搜索中实现代码以相应地获取数据。应该使用SearchSourceBuilder中的什么方法?
【问题讨论】:
标签: java elasticsearch odata filtering
您可以轻松地通过一个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' $filterid eq 'test.com' $filter$select=status 部分【讨论】: