8.1 SpringBoot集成ElasticSearch之EBatis简介

1.简介
EBatis是一个声明式的ElasticSearch ORM框架。类似MyBatis,只需要定义接口,便可轻松访问ElasticSearch,优雅地帮助开发者隔离业务对ElasticSearch底层接口的调用,无需手动构建繁琐的DSL语句。同时,当升级ElastiSearch版本时,无需关心底层接口的变动,平滑升级。目前,支持ElasticSearch6.5.1与7.5.1版本(本教程演示版本)。

2.连接集群
(1).依赖

<parent>
	<artifactId>ebatis</artifactId>
	<groupId>io.manbang</groupId>
	<version>7.5.1.10.RELEASE</version>
</parent>
<properties>
	<spring-boot.version>1.5.12.RELEASE</spring-boot.version>
</properties>
<dependencies>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<optional>true</optional>
	</dependency>
	<!--elasticsearch-->
	<dependency>
		<groupId>io.manbang</groupId>
		<artifactId>ebatis-spring</artifactId>
		<version>7.5.1.10.RELEASE</version>
	</dependency>
	<dependency>
		<groupId>com.google.auto.service</groupId>
		<artifactId>auto-service-annotations</artifactId>
		<version>1.0-rc6</version>
		<optional>true</optional>
		<scope>compile</scope>
	</dependency>
	<dependency>
		<groupId>com.google.auto.service</groupId>
		<artifactId>auto-service</artifactId>
		<version>1.0-rc6</version>
		<optional>true</optional>
		<scope>compile</scope>
	</dependency>
</dependencies>

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>${spring-boot.version}</version>
			<scope>import</scope>
			<type>pom</type>
		</dependency>
	</dependencies>
</dependencyManagement>
<build>
	<finalName>es</finalName>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<version>${spring-boot.version}</version>
		</plugin>
	</plugins>
</build>

(2).代码
首先在项目目录“/src/main/java/com/example/es”下新建config目录,并在config目录下新建SampleClusterRouterProvider类,具体代码如下。

@AutoService(ClusterRouterProvider.class)
public class SampleClusterRouterProvider implements ClusterRouterProvider {
    public static final String SAMPLE_CLUSTER_NAME = "sampleCluster";

    @Override
    public ClusterRouter getClusterRouter(String name) {
        if (SAMPLE_CLUSTER_NAME.equalsIgnoreCase(name)) {
            Cluster cluster = Cluster.simple("127.0.0.1", 9200, Credentials.basic("admin", "123456"));
            ClusterRouter clusterRouter = ClusterRouter.single(cluster);
            return clusterRouter;
        } else {
            return null;
        }
    }
}

然后再新建EsConfig类,具体代码如下。

@Configuration
@EnableEasyMapper(basePackages = "com.example.es.mapper")
public class EsConfig {
    @Bean(destroyMethod = "close")
    public ClusterRouter clusterRouter() {
        return ClusterRouter.localhost();
    }
}

(3).测试
启动项目,然后在控制台可以看到如下输出。

Started EsApplication in 2.001 seconds (JVM running for 3.112)

3.文档准备
打开kibana Dev Tools,分别添加索引和文档记录。

PUT /employee
{
	"settings": {
		"number_of_shards": 5,
		"number_of_replicas": 1
	}
}
PUT /employee/_mapping
{
  "properties": {
    "employeeId": {
      "type": "integer"
    },
    "name": {
      "type": "text"
    },
    "age": {
      "type": "integer"
    },
    "birthday": {
      "type": "date",
      "format": "yyyy-MM-dd"
    },
    "job": {
      "type": "keyword"
    },
    "salary": {
      "type": "float"
    }
  }
}
POST /employee/_doc
{
    "employeeId":10000001,
	"name": "James Harden",
	"job": "Java engineer",
	"age": 31,
	"salary": 30000.00,
	"birthday": "1991-01-01"
}
{
	"employeeId":10000002,
	"name": "Stephen Curry",
	"job": "Java engineer",
	"age": 27,
	"salary": 20000.00,
	"birthday": "1995-08-06"
}
{
    "employeeId":10000003,
	"name": "LeBron James",
	"job": "Technical director",
	"age": 35,
	"salary": 50000.00,
	"birthday": "1987-12-25"
}
{
    "employeeId":10000004,
	"name": "Damian Lillard",
	"job": "Vue engineer",
	"age": 25,
	"salary": 18000.00,
	"birthday": "1996-10-01"
}
{
    "employeeId":10000005,
	"name": "Kevin Durant",
	"job": "Vue engineer",
	"age": 30,
	"salary": 28000.00,
	"birthday": "1992-05-01"
}
{
    "employeeId":10000006,
	"name": "Chirs Paul",
	"job": "Java engineer",
	"age": 33,
	"salary": 29000.00,
	"birthday": "1988-12-02"
}
{
    "employeeId":10000007,
	"name": "Jason Tatum",
	"job": "Java engineer",
	"age": 24,
	"salary": 15000.00,
	"birthday": "1997-08-02"
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值