springboot整合Elasticsearch

1,准备

①,docker启动Elasticsearchhtml

#下载镜像
docker pull registry.docker-cn.com/library/elasticsearch

#运行镜像
#注意:elasticsearch 默认占用2g内存,因此这里要指定
#-d 后台运行,-p 暴露的端口 ,--name 指定容器名,最后带上镜像id便可
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name es 671bb2d7da44

#将容器的文件映射到宿主机上
docker cp ten_es:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml


安装es
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name ten_es 5acf0e8da90b

进入容器 
docker exec -it ten_es /bin/bash

中止容器
docker stop ten_es

删除容器
docker rm ten_es

开发容器的es,让外部访问

vim /etc/security/limits.conf 
elsearch hard nofile 65536
elsearch soft nofile 65536

vim /etc/sysctl.conf 
vm.max_map_count=655360

②,检查elasticsearch 是否启动成功java

看到以下界面,说明启动成功web

③,pom依赖spring

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

<dependencies>
	<!-- 这里使用 jest 操做elasticsearch ,很是方便-->
	<dependency>
		<groupId>io.searchbox</groupId>
		<artifactId>jest</artifactId>
		<version>5.3.3</version>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
</dependencies>

 

④,application.properties 配置docker

server.port=8082

spring.elasticsearch.jest.uris=http://192.168.43.28:9200

spring.elasticsearch.jest.username=guest
spring.elasticsearch.jest.password=guest

2,查看JestAutoConfiguration

它为咱们注入了JestClient ,而咱们对elasticsearch的操做是经过它来完成的vim

@Bean(destroyMethod = "shutdownClient")
	@ConditionalOnMissingBean
	public JestClient jestClient() {
		JestClientFactory factory = new JestClientFactory();
		factory.setHttpClientConfig(createHttpClientConfig());
		return factory.getObject();
	}

3,bean

import io.searchbox.annotations.JestId;

public class Ariticle {

	@JestId
	private Integer id;
	private String title;
	private String author;
	private String content;
	
}

4,建立索引及文件

import com.es.elasticsearch.bean.Ariticle;
import io.searchbox.client.JestClient;
import io.searchbox.core.Index;
import io.searchbox.core.Search;
import io.searchbox.core.SearchResult;
@RestController
public class BookController {


    @Autowired
    private JestClient jestClient;


    @RequestMapping("ariticle")
    public String create() {
        Ariticle ariticle=new Ariticle();
        ariticle.setId(1);
        ariticle.setTitle("暴击");
        ariticle.setAuthor("xiao su");
        ariticle.setContent("三狗行,必有单身");

        Index index = new Index.Builder(ariticle).index("qiyouji").type("news").build();//构建一个索引功能
        try {
            jestClient.execute(index);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "建立成功";
    }
}

①,浏览器访问ariticle 方法浏览器

5,测试

说明整合成功,更多Elasticsearch的用法,请参考Elasticsearch 官网bash

https://www.elastic.co/guide/cn/elasticsearch/guide/current/_indexing_employee_documents.htmlapp

相关文章
相关标签/搜索