elasticsearch实现sql 几个字段相加 条件判断

select * from [fre_userlianghua] where [shop_id]='195' and ([fangyuanshou]+[fangyuanzu]+[keyuanshou]+[keyuanzu]+[yaoshi]+[fangkan]+[dianhua1]+[daikan]+[dianhua2]+[shengming1]+[shengming2])<3
GET dss_quantization_index/_search
{
  "from": 0,
  "size": 50, 
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "shopId": {
              "value": "195"
            }
          }
        }
      ],
      "filter": {
        "script": {
          "script": {
            "source": "doc['sellProperty'].value + doc['rentProperty'].value + doc['sellLook'].value + doc['rentLook'].value + doc['keys'].value + doc['roomLook'].value + doc['firstPhone'].value + doc['takeLook'].value + doc['secondPhone'].value + doc['firstDeclaration'].value + doc['secondDeclaration'].value < 3"
            , "lang": "painless"
          }
        }
      }
    }
  }
}

java api

 executorService.execute(() -> {
                NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
                BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();

                if ((StringUtils.isNotBlank(frmanage){
                    if (StringUtils.isNotBlank(shopid)) {
                        boolQueryBuilder.must(QueryBuilders.termQuery("shopId", shopid));
                    }
                    Map<String, Object> params = new HashMap<>();
                    String inline = "doc['sellProperty'].value + doc['rentProperty'].value + doc['sellLook'].value + doc['rentLook'].value + " +
                            "doc['keys'].value + doc['roomLook'].value + doc['firstPhone'].value + doc['takeLook'].value +" +
                            " doc['secondPhone'].value + doc['firstDeclaration'].value + doc['secondDeclaration'].value < 3";
                    Script script = new Script(ScriptType.INLINE, "painless", inline, params);
                    ScriptQueryBuilder scriptQueryBuilder = new ScriptQueryBuilder(script);
                    boolQueryBuilder.filter(scriptQueryBuilder);
                }
             

			 /*  boolQueryBuilder.filter(new BoolQueryBuilder()
                        .must(QueryBuilders.existsQuery("sellProperty"))
                        .must(QueryBuilders.existsQuery("rentProperty"))
                        .must(QueryBuilders.existsQuery("rentProperty"))
                        .must(QueryBuilders.existsQuery("sellLook"))
                        .must(QueryBuilders.existsQuery("rentLook"))
                        .must(QueryBuilders.existsQuery("keys"))
                        .must(QueryBuilders.existsQuery("roomLook"))
                        .must(QueryBuilders.existsQuery("firstPhone"))
                        .must(QueryBuilders.existsQuery("takeLook"))
                        .must(QueryBuilders.existsQuery("secondPhone"))
                        .must(QueryBuilders.existsQuery("firstDeclaration"))
                        .must(QueryBuilders.existsQuery("secondDeclaration")));*/

                NativeSearchQuery searchQuery = queryBuilder
                        .withQuery(boolQueryBuilder)
                        .withSourceFilter(new FetchSourceFilter(new String[]{"id"}, null))
                        .build();

             

                AggregatedPage<QuantizationEntity> quantizationEntities = elasticsearchTemplate.queryForPage(searchQuery, QuantizationEntity.class);

                long totalElements = quantizationEntities.getTotalElements();

                result.put("lhsz", totalElements);
                countDownLatch.countDown();
            });
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值