springboot不同版本整合elasticsearch

使用springboot整合elasticsearch时候,需要注意版本的对应关系,不然问题会非常多,对应关系如下:

springboot2.1整合 elasticsearch的两个方式:通过spring-data-es(springboot 2.2版本以后使用http形式操作,使用端口9200,springboot 2.1使用tcp形式访问es,使用端口9300)、使用 RestHighLevelClient 方式

使用RestHighLevelClient 方式,官方建议restHighLevelClient,比较灵活使用

使用springboot 2.1x,es使用6.3

1.maven配置

 <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>6.2.4</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>6.2.4</version>
        </dependency>

2.配置文件,端口为9200

elasticsearch:
  ip: 192.168.1.84:9200
  username: elastic
  password: Gdfllll

3.创建索引,自定义索引分词器,基于业务的需要这里我自定义了两个分词器,一个空格转小写分词器,一个结巴中文分词器

PUT /news_tag_zh
{
	    "settings":{
	        "analysis":{
	            "analyzer":{
	                "my_lowercase_analyzer":{
	                    "type":"custom",
	                    "tokenizer":"whitespace",
	                    "filter":[
	                        "lowercase"
	                    ]
	                },
	                "my_zh_analyzer":{
	                    "type":"custom",
	                    "tokenizer":"ik_smart",
	                    "filter":[
	                        "lowercase"
	                    ]
                   }
	            }
	        }
	    },
	    "mappings":{
	        "news_tag":{
	            "properties":{
	                "newsId":{
	                    "type":"long"
	                },
	                "newsType":{
	                    "type":"integer"
	                },
	                "lang":{
	                    "type":"integer"
	                },
	                "sourceType":{
                         "type":"integer"
                     },
	                "tagTime":{
	                    "type":"integer"
	                },
	                "authorId":{
	                    "type":"long"
	                },
	                "isOriginal":{
	                    "type":"boolean"
	                },
	                "isToday":{
	                    "type":"boolean"
	                },
	                "specialId":{
                      "type":  "integer"
                  },
	                "isSelection":{
	                  "type":"boolean"
	                },
	                "keyWordList":{
	                    "type":"text",
	                    "analyzer":"my_lowercase_analyzer"
	                },
	                "tagLv1List":{
	                    "type":"text",
	                    "analyzer":"my_lowercase_analyzer",
	                    "fielddata": true
	                },
	                "tagLv2List":{
	                    "type":"text",
	                    "analyzer":"my_lowercase_analyzer",
	                    "fielddata": true
	                },
	               "contentTagList":{
	                    "type":"text",
	                    "analyzer":"my_lowercase_analyzer"
	                },
	                "areaList":{
	                    "type":"text",
	                    "analyzer":"my_lowercase_analyzer"
	                },
	                "title":{
                    	"type":"text",
                    	"analyzer":"my_zh_analyzer"
                    },
	                "updateTime":{
	                    "type":"long"
	                },
	                "releaseTime":{
	                    "type":"long"
	                },
	                 "endTime":{
	                    "type":"long"
	                }
	            }
	        }
	    }
	}

4.Es配置类

ElasticSearchConfiguration配置文件

@Configuration
public class ElasticSearchConfiguration extends AbstractFactoryBean {

    private static final Logger LOG = LoggerFactory.getLogger(ElasticSearchConfiguration.class);

    private static final int ADDRESS_LENGTH = 2;
    private static final String HTTP_SCHEME = "http";

    /**
     * 使用冒号隔开ip和端口1
     */
    @Value("${elasticsearch.ip}")
    String[] ipAddress;

    @Value("${elasticsearch.username}")
    String username;

    @Value("${elasticsearch.password}")
    String password;

    private RestHighLevelClient restHighLevelClient;

    @Override
    public void destroy() throws Exception {
        // 关闭Client
        if (restHighLevelClient != null) {
            restHighLevelClient.close();
        }
    }

    @Override
    public Class<RestHighLevelClient> getObjectType() {
        return RestHighLevelClient.class;
    }

    @Override
    public boolean isSingleton() {
        return false;
    }

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值