SpringBoot整合ElasticsearchBboss

 

原文链接:https://my.oschina.net/fusublog/blog/3060127

一 :关于ElasticsearchBboss

关于ElasticsearchBboss的介绍请详见链接传送门

二:记录SpringBoot整合过程

1 引入依赖

 <!--ElasticsearchBboss启动类引入-->
 <dependency>
            <groupId>com.bbossgroups.plugins</groupId>
            <artifactId>bboss-elasticsearch-spring-boot-starter</artifactId>
            <version>5.7.5</version>
</dependency>

2配置集群地址

如果是https的话,需要注意写法略微不同详见传送门里的文档


#springboot maven项目ESBboss配置文件
spring.elasticsearch.bboss.elasticsearch.rest.hostNames=127.0.0.1:9200
#多集群地址由逗号分隔,例,如下:
#spring.elasticsearch.bboss.elasticsearch.rest.hostNames=10.180.211.27:9200,10.180.211.28:9200,10.180.211.29:9200

如果启用了x-pack或searchguard安全身份验证,请在application.properties中使用以下两个属性配置帐户和密码,详见传送门里的文档

扩展配置

#http链接池配置
http.timeoutConnection = 50000
http.timeoutSocket = 50000
http.connectionRequestTimeout=50000
http.retryTime = 1
http.maxLineLength = -1
http.maxHeaderCount = 200
http.maxTotal = 400
http.defaultMaxPerRoute = 200

# dsl配置文件热加载扫描时间间隔,毫秒为单位,默认5秒扫描一次,<= 0时关闭扫描机制
dslfile.refreshInterval = -1

 

3.在springBoot中使用DSL查询

3.1建立实体类的映射 

如果字段类型不一样,映射为null,但是不会不会报错,比较灵活

public class Demo {
    private String id;
    private String name;
    private String tweet;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getTweet() {
        return tweet;
    }

    public void setTweet(String tweet) {
        this.tweet = tweet;
    }

    @Override
    public String toString() {
        return "Demo{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", tweet='" + tweet + '\'' +
                '}';
    }
}

3.2在服务提供类中注入ClientInterface 引入xml

@Component
public class TestService {

    /**
     * 创建加载配置文件的客户端工具,用来检索文档,单实例多线程安全
     */
    ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/dsl.xml");

    public ESDatas<Demo> dslOne(Map<String, Object> params) {

        /**
         *执行查询,demo为索引表,_search为检索操作action
         * ESDatas包含当前检索的记录集合,最多10条记录,由dsl中的size属性指定
         * demo为索引表,_search为检索操作action
         * @param searchDatas esmapper/demo.xml中定义的dsl语句
         * @param params 变量参数
         * @param Demo.class  返回的文档封装对象类型
         */
        ESDatas<Demo> esDatas = clientUtil.searchList("us/tweet/_search", "scriptDsl", params, Demo.class);

        return esDatas;
    }

}

xml 如下

<property name="scriptDsl">
    <![CDATA[
        {
          "query": {
            "match": {
              "name":#[name]
            }
          },
           "size":10
        }
    ]]>
</property>

3.3请求参数测试

@RequestMapping("/test")
@Controller
public class TestController {

    @Autowired
    private TestService testService;

    @RequestMapping("/dsl")
    @ResponseBody
    public ESDatas<Demo> DslTest() {

        Map<String, Object> params = new HashMap<String, Object>();
        //设置applicationName1和applicationName2两个变量的值
        params.put("name", "John");

        ESDatas<Demo> esDatas = testService.dslOne(params);

        return esDatas;
    }
}

结果如下

 

posted @   枫树湾河桥  阅读(1744)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
Live2D
欢迎阅读『SpringBoot整合ElasticsearchBboss』
西雅图
14:14发布
西雅图
14:14发布
6°
多云
东北风
1级
空气质量
相对湿度
91%
今天
中雨
5°/9°
周三
3°/12°
周四
5°/10°
点击右上角即可分享
微信分享提示