elasticsearch处理map请求代码(适用组合条件查询)

本文介绍了一个使用Java实现的Elasticsearch查询业务逻辑。通过构建复杂的查询条件并使用Jest客户端来执行搜索操作,该方法能够灵活地根据提供的参数进行全文匹配或精确匹配查询。
public class ElaticsearchBiz {

    @Autowired
    JestClient jestClient;


    public MsgDto findBrandCategory(Map<String,Object> map) {
        String id =null;
        String name =null;
        Map<String,String> mm ;
        Map<String,Object> mm1 ;
        List<Map<String,Object>> list = new ArrayList<>();
        for(Map.Entry<String,Object> entry:map.entrySet())
        {
            mm = new HashMap<>();
            mm.put(entry.getKey().toString().toLowerCase(),entry.getValue().toString());
            mm1 = new HashMap<>();
            if(1==1) //这里根据实际需要 判断是不是分词
                mm1.put("match",mm);
            else mm1.put("term",mm);
            list.add(mm1);

        }

        Map<String,Object> mm2  = new HashMap<>();
        mm2.put("must",list);
        Map<String,Object> mm3  = new HashMap<>();
        mm3.put("bool",mm2);
        Map<String,Object> mm4  = new HashMap<>();
        mm4.put("query",mm3);
        JSONObject jsonObject = JSONObject.fromObject(mm4);
       String aa =jsonObject.toString();
        Search search = new Search.Builder(aa)
                .addIndex("threees").addType("orgbrand").build();

           return ElasticSearch(search);

    }

    public MsgDto ElasticSearch(Search search){
        try {
            JestResult result = jestClient.execute(search);
            Map<String, Object> map = new HashMap<>();
            return new MsgDto(MsgCode.SUCCESS_CODE, "查询成功", true, result.getSourceAsObjectList(map.getClass()));
        }catch (IOException e){
            e.printStackTrace();
            return null;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值