• Java中使用ES引擎


    一:在springboot中引入ES,需要安装配置(后面再补)

    二:使用说明

    场景:用户端输入信息,使用ES引擎获取相关数据。

    (1)存储用户输入的查询信息,params

    Map<String,Object> params = new HashMap<>();
    params.put("location",location);
    params.put("searchParam",inputStr);

    (2)向ES传入用户输入的参数params

    ClientInterface clientUtil = bossESStarter.getConfigRestClient("mapper/es/questionAns.xml"); //xml文件中配置了查询语句
    MapRestResponse response = null;
    response = clientUtil.search("questionans/_search","getSelected",params);//第一个参数是索引和使用查询,第二个参数是调用的查询方法。

    (3)对返回结果进行处理,得到resultList链表。
     MapSearchHits searchHits =response.getSearchHits();
            //命中的数量
            Integer total = (Integer) searchHits.getTotal();
            //获取的数据如下
            List<MapSearchHit> hitlist = searchHits.getHits();
            //创建结果
            List<Object> resultList = new ArrayList<>();
            //需要获取哪些数据
            hitlist.forEach(
                    value->
                    {
                        resultList.add(value.getSource());
                    }
            );

    
    

     最后,附上xml文件。这里值得解释的是,ES的语法。

    bool 过滤

    bool 过滤可以用来合并多个过滤条件查询结果的布尔逻辑,它包含一下操作符:

    • must :: 多个查询条件的完全匹配,相当于 and。
    • must_not :: 多个查询条件的相反匹配,相当于 not。
    • should :: 至少有一个查询条件匹配, 相当于 or。

    下图中的语句,表示输入的location要完全匹配。输入的searchParam匹配问题和答案之中的一个就可以了。

     在上图的语句中加入一个location是否为*的判定,如果location是* 的话,要求通配所有的location。

    
    
    



  • 相关阅读:
    一行代码搞定Dubbo接口调用
    测试周期内测试进度报告规范
    jq 一个强悍的json格式化查看工具
    浅析Docker容器的应用场景
    HDU 4432 Sum of divisors (水题,进制转换)
    HDU 4431 Mahjong (DFS,暴力枚举,剪枝)
    CodeForces 589B Layer Cake (暴力)
    CodeForces 589J Cleaner Robot (DFS,或BFS)
    CodeForces 589I Lottery (暴力,水题)
    CodeForces 589D Boulevard (数学,相遇)
  • 原文地址:https://www.cnblogs.com/maowuyu-xb/p/13494628.html
Copyright © 2020-2023  润新知