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

相關文章
相關標籤/搜索