ES常用查询

1.filter并且查询:查询名字为zhangsan年龄在10~20岁之间的人

java代码

 BoolFilterBuilder filterBuilder = FilterBuilders.boolFilter()
                    .must(FilterBuilders.termFilter("name", "zhangsan"));

            filterBuilder = filterBuilder.must(FilterBuilders.rangeFilter("age")
                    .gte(10)
                    .lte(30));


            TransportClient esClient = esDao.getEsClient();
            SearchRequestBuilder queryRequest = esClient.prepareSearch("index_user")
                    .setTypes("201908")
                    .setQuery(QueryBuilders.filteredQuery(null, filterBuilder));

对等dsl语句

{
  "size" : 1,
  "query" : {
    "filtered" : {
      "filter" : {
        "bool" : {
          "must" : [ {
            "term" : {
              "name" : "zhangsan"
            }
          }, {
            "range" : {
              "age" : {
                "from" : 10,
                "to" : 20,
                "include_lower" : true,
                "include_upper" : true
              }
            }
          } ]
        }
      }
    }
  }
}

2.filter或查询:查询名字为zhangsan年龄在10~20或是50~60岁之间的人

BoolFilterBuilder filterBuilder = FilterBuilders.boolFilter()
                    .must(FilterBuilders.termFilter("name", "zhangsan"));


            filterBuilder = filterBuilder
                    .should(FilterBuilders.rangeFilter("age")
                            .gte(10)
                            .lte(20))
                    .should(FilterBuilders.rangeFilter("age")
                            .gte(50)
                            .lte(60));


            TransportClient esClient = esDao.getEsClient();
            SearchRequestBuilder queryRequest = esClient.prepareSearch("user_index")
                    .setTypes("201908")
                    .setQuery(QueryBuilders.filteredQuery(null, filterBuilder));

对等dsl语句

{
  "bool" : {
    "must" : {
      "term" : {
        "name" : "zhangsan"
      }
    },
    "should" : [ {
      "range" : {
        "st_updatetime_stamp" : {
          "from" : 10,
          "to" : 20,
          "include_lower" : true,
          "include_upper" : true
        }
      }
    }, {
      "range" : {
        "st_updatetime_stamp" : {
          "from" : 50,
          "to" : 60,
          "include_lower" : true,
          "include_upper" : true
        }
      }
    } ]
  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值