美文网首页
SpringDataElasticSearch(一)

SpringDataElasticSearch(一)

作者: r09er | 来源:发表于2020-03-20 16:48 被阅读0次

SpringDataElasticsearch

SpringDataElasticsearch是SpringData模块的一个子模块,是对ES原生API的二次封装.
由于SpringData版本与ES版本有相关的依赖性.所以集成会有坑.以此记录

SpringBoot,SpringData,ES各个版本的支持情况

本文编写时候ES最新版已经是7.6.1,但是SpringData最高只支持到6.8.4,所以需要慎重选择

各个版本的支持

在下文的示例中,使用的版本如下

  • Elasticsearch: 6.8.4
  • SpringBoot: 2.2.5.RELEASE
  • SpringDataElasticSearch: 2.2.5.RELEASE

Docker安装ES

示例为Docker安装ES,其他方式请参考官网ES下载

1.Docker拉取镜像

docker pull elasticsearch:6.8.4

2.启动Docker

docker run --name "es6.8.4" -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.8.4 -d

3.访问http://localhost:9200/

正常显示

有类似输出证明docker启动ES成功

SpringBoot工程使用ES

1.添加SpringBoot依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
    </parent>

2.添加SpringDataElasticsearch依赖

 <dependency>
        <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

3.配置ES连接
application.yml

spring:
  redis:
    cluster:
      nodes: 127.0.0.1:9300

配置请求的日志

在初学或者排查请求问题的时候,日志是非常重要的,但是官方文档或者网上有很难找到教程...在翻看源码后终于找到解决办法

在SpringData的官方文档中,只给出了Client Logging的配置方式,配置之后只能输出请求es的接口地址.
日志输出类org.elasticsearch.client.RequestLogger
查看源码后发现,RestClient输出日志的logger使用了不同的Log对象,如果想输出详细的requestresponse日志,需要使用tracer

配置logback.xml/log4j2.xml

根据自己的项目使用的log依赖配置.这里使用logback参考

logback.xml

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%d{ISO8601}] [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="WARN">
        <appender-ref ref="STDOUT"/>
    </root>

    <!--输出完整的请求es日志-->
    <logger name="tracer" level="TRACE" additivity="false">
        <appender-ref ref="STDOUT"/>
    </logger>

    <!-- 输出restClient的日志 -->
    <logger name="org.elasticsearch.client.RestClient" level="DEBUG" additivity="false">
        <appender-ref ref="STDOUT"/>
    </logger>
</configuration>
看到完整日志输出

Demo

Country

@Document(indexName = "world")
public class Country implements Serializable {

    @Id
    private Integer id;

    private String name;

    public String getName() {
        return name;
    }

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

    public Integer getId() {
        return id;
    }

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

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

CountryRepository

public interface CountryRepository extends ElasticsearchRepository<Country, Long> {
    List<Country> findCountryByName(String name);

    Page<Country> findCountryByName(String name, Pageable pageable);

    Country findCountryById(String name);

}

CountryTest

@RunWith(SpringRunner.class)
@SpringBootTest
class CountryServiceTest {


    @Autowired
    private CountryRepository countryRepository;


    @Test
    void saveCountry() {
        Country country = new Country();
        country.setName("中国");
        countryRepository.save(country);
        Country country1 = new Country();
        country1.setName("美国");
        countryRepository.save(country1);
    }

    @Test
    public void testDel(){
        countryRepository.deleteAll();
    }

    @Test
    void getCountryByName() {
        Page<Country> countryList = countryRepository.findCountryByName("国", PageRequest.of(0, 10));
        System.out.println(countryList.getContent());
    }
}

相关文章

  • SpringDataElasticSearch(一)

    SpringDataElasticsearch SpringDataElasticsearch是SpringDat...

  • Springboot整合SpringDataElasticSea

    说明: SpringDataElasticsearch 是将Spring的核心概念应用于ElasticSearch...

  • SpringDataElasticsearch的使用

    自从上一家公司辞职之后,也没有什么机会做这个es相关的了,最近公司要做学习分享,就又拾起es这个话题。 使用Spr...

  • 。一一,一,一,一。

    一,、

  • 一 一

    2018年6月22日 星期五 雨 一水一万物 一星一宇宙 一字一文章 一书一世界 一读一微笑 一赞一知音

  • 一 一

    杨德昌《一 一》,早年曾看过一遍。 婷婷短发,白净,蓝色衬衫,学生裙,黑皮鞋,白袜子,学习很好的中学女生。温柔,懂...

  • 一 一

    给自己无处安放的灵魂找到了家!简书,我的新写作时光!继续,在流年里拾荒,禅落一身的光!

  • 一.一

  • 一.一

    一节车厢,一只行囊,肯为当时一念疯狂。 一根点燃,一缕惆怅,不许未来一片迷茫。 一眼远看,一众不详,哪知各位一去何...

  • 一(一)

    我叫一,总有人喜欢在背后说我,因为很多时候我都是自己一个人。很多人都说我很孤单,看起来很可怜,但我觉得很奇怪,他们...

网友评论

      本文标题:SpringDataElasticSearch(一)

      本文链接:https://www.haomeiwen.com/subject/dsojyhtx.html