【问题标题】:Need to implement a Elastic search query with both $select and $filter需要使用 $select 和 $filter 实现弹性搜索查询
【发布时间】: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


    【解决方案1】:

    您可以轻松地通过一个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();
    

    在上面的代码中:

    1. 负责name eq 'abc' $filter
    2. 负责id eq 'test.com' $filter
    3. 负责$select=status 部分

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 2014-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      相关资源
      最近更新 更多