Springboot+Elasticsearch整合实例
这篇文章主要介绍Springboot与Elasticsearch整合在一起的简单例子,作为自己学习的一个记录
使用到的工具:
- Spring Boot 1.5.10.RELEASE
- Spring Boot Starter Data Elasticsearch 1.5.10.RELEASE
- Spring Data Elasticsearch 2.1.10.RELEASE
- Elasticsearch 2.4.0
- Maven
- Java 8
注意
:Spring Boot 1.5.10.RELEASE和Spring Data Elasticsearch 2.1.10.RELEASE只支持Elasticsearch 2.4.0,不支持最新的ElasticSearch 5.x版本
详见:Spring Data Elasticsearch Spring Boot version matrix
1.项目依赖:
1 |
|
1 | D:\springboot-learning\springboot-elasticsearch>mvn dependency:tree |
2. Spring Data ElasticSearch Application
现在开始Spring Boot + Spring Data + Elasticsearch
2.1 编写我们的实体类:
1 | package com.xmp.entity; |
1 | package com.xmp.entity; |
1 | package com.xmp.entity; |
2.2 编写Elasticsearch Repository(dao)
1 | package com.xmp.repository; |
2.3 编写service
老套路,先写需要的接口
1 | package com.xmp.service; |
再写实现类
1 | package com.xmp.service; |
2.4 配置Elasticsearchapplication.yml
1 | elasticsearch: |
2.5 编写springboot配置,连接Elasticsearch集群
1 | package com.xmp.config; |
3. Run Spring Boot Application
3.1 运行这个demo,需要按照以下几步
1: 安装 Java 设置 JAVA_HOME 和 PATH variables.
2: 安装 Maven.
3: 安装Elasticsearch2.4.0
配置 ELASTICSEARCH_HOME = C:\elasticsearch-2.4.0
4:配置 ElasticSearch Cluster
打开 ${ELASTICSEARCH_HOME}\config\elasticsearch.yml 添加如下参数cluster.name: xmp-cluster
5: 运行项目
5.2 运行项目,会插入10条信息到elasticsearch服务器
1 | package com.xmp; |
输出:
1 | "C:\Program Files\Java\jdk1.8.0_121\bin\java" -Dspring.output.ansi.enabled=always -Didea.launcher.port=7537 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2016.3.5\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_121\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\rt.jar;D:\springboot-learning\springboot-elasticsearch\target\classes;D:\repository\org\springframework\boot\spring-boot-starter-data-elasticsearch\1.5.10.RELEASE\spring-boot-starter-data-elasticsearch-1.5.10.RELEASE.jar;D:\repository\org\springframework\boot\spring-boot-starter\1.5.10.RELEASE\spring-boot-starter-1.5.10.RELEASE.jar;D:\repository\org\springframework\boot\spring-boot\1.5.10.RELEASE\spring-boot-1.5.10.RELEASE.jar;D:\repository\org\springframework\boot\spring-boot-autoconfigure\1.5.10.RELEASE\spring-boot-autoconfigure-1.5.10.RELEASE.jar;D:\repository\org\springframework\boot\spring-boot-starter-logging\1.5.10.RELEASE\spring-boot-starter-logging-1.5.10.RELEASE.jar;D:\repository\ch\qos\logback\logback-classic\1.1.11\logback-classic-1.1.11.jar;D:\repository\ch\qos\logback\logback-core\1.1.11\logback-core-1.1.11.jar;D:\repository\org\slf4j\jul-to-slf4j\1.7.25\jul-to-slf4j-1.7.25.jar;D:\repository\org\slf4j\log4j-over-slf4j\1.7.25\log4j-over-slf4j-1.7.25.jar;D:\repository\org\yaml\snakeyaml\1.17\snakeyaml-1.17.jar;D:\repository\org\springframework\data\spring-data-elasticsearch\2.1.10.RELEASE\spring-data-elasticsearch-2.1.10.RELEASE.jar;D:\repository\org\springframework\spring-context\4.3.14.RELEASE\spring-context-4.3.14.RELEASE.jar;D:\repository\org\springframework\spring-tx\4.3.14.RELEASE\spring-tx-4.3.14.RELEASE.jar;D:\repository\org\springframework\data\spring-data-commons\1.13.10.RELEASE\spring-data-commons-1.13.10.RELEASE.jar;D:\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\repository\joda-time\joda-time\2.9.9\joda-time-2.9.9.jar;D:\repository\org\elasticsearch\elasticsearch\2.4.6\elasticsearch-2.4.6.jar;D:\repository\org\apache\lucene\lucene-core\5.5.4\lucene-core-5.5.4.jar;D:\repository\org\apache\lucene\lucene-backward-codecs\5.5.4\lucene-backward-codecs-5.5.4.jar;D:\repository\org\apache\lucene\lucene-analyzers-common\5.5.4\lucene-analyzers-common-5.5.4.jar;D:\repository\org\apache\lucene\lucene-queries\5.5.4\lucene-queries-5.5.4.jar;D:\repository\org\apache\lucene\lucene-memory\5.5.4\lucene-memory-5.5.4.jar;D:\repository\org\apache\lucene\lucene-highlighter\5.5.4\lucene-highlighter-5.5.4.jar;D:\repository\org\apache\lucene\lucene-queryparser\5.5.4\lucene-queryparser-5.5.4.jar;D:\repository\org\apache\lucene\lucene-sandbox\5.5.4\lucene-sandbox-5.5.4.jar;D:\repository\org\apache\lucene\lucene-suggest\5.5.4\lucene-suggest-5.5.4.jar;D:\repository\org\apache\lucene\lucene-misc\5.5.4\lucene-misc-5.5.4.jar;D:\repository\org\apache\lucene\lucene-join\5.5.4\lucene-join-5.5.4.jar;D:\repository\org\apache\lucene\lucene-grouping\5.5.4\lucene-grouping-5.5.4.jar;D:\repository\org\apache\lucene\lucene-spatial\5.5.4\lucene-spatial-5.5.4.jar;D:\repository\org\apache\lucene\lucene-spatial3d\5.5.4\lucene-spatial3d-5.5.4.jar;D:\repository\com\spatial4j\spatial4j\0.5\spatial4j-0.5.jar;D:\repository\com\google\guava\guava\18.0\guava-18.0.jar;D:\repository\org\elasticsearch\securesm\1.0\securesm-1.0.jar;D:\repository\com\carrotsearch\hppc\0.7.1\hppc-0.7.1.jar;D:\repository\com\fasterxml\jackson\dataformat\jackson-dataformat-smile\2.8.10\jackson-dataformat-smile-2.8.10.jar;D:\repository\com\fasterxml\jackson\dataformat\jackson-dataformat-yaml\2.8.10\jackson-dataformat-yaml-2.8.10.jar;D:\repository\com\fasterxml\jackson\dataformat\jackson-dataformat-cbor\2.8.10\jackson-dataformat-cbor-2.8.10.jar;D:\repository\io\netty\netty\3.10.6.Final\netty-3.10.6.Final.jar;D:\repository\com\ning\compress-lzf\1.0.2\compress-lzf-1.0.2.jar;D:\repository\com\tdunning\t-digest\3.0\t-digest-3.0.jar;D:\repository\org\hdrhistogram\HdrHistogram\2.1.6\HdrHistogram-2.1.6.jar;D:\repository\commons-cli\commons-cli\1.3.1\commons-cli-1.3.1.jar;D:\repository\com\twitter\jsr166e\1.1.0\jsr166e-1.1.0.jar;D:\repository\com\fasterxml\jackson\core\jackson-core\2.8.10\jackson-core-2.8.10.jar;D:\repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;D:\repository\org\slf4j\jcl-over-slf4j\1.7.25\jcl-over-slf4j-1.7.25.jar;D:\repository\org\springframework\boot\spring-boot-starter-web\1.5.10.RELEASE\spring-boot-starter-web-1.5.10.RELEASE.jar;D:\repository\org\springframework\boot\spring-boot-starter-tomcat\1.5.10.RELEASE\spring-boot-starter-tomcat-1.5.10.RELEASE.jar;D:\repository\org\apache\tomcat\embed\tomcat-embed-core\8.5.27\tomcat-embed-core-8.5.27.jar;D:\repository\org\apache\tomcat\tomcat-annotations-api\8.5.27\tomcat-annotations-api-8.5.27.jar;D:\repository\org\apache\tomcat\embed\tomcat-embed-el\8.5.27\tomcat-embed-el-8.5.27.jar;D:\repository\org\apache\tomcat\embed\tomcat-embed-websocket\8.5.27\tomcat-embed-websocket-8.5.27.jar;D:\repository\org\hibernate\hibernate-validator\5.3.6.Final\hibernate-validator-5.3.6.Final.jar;D:\repository\javax\validation\validation-api\1.1.0.Final\validation-api-1.1.0.Final.jar;D:\repository\org\jboss\logging\jboss-logging\3.3.1.Final\jboss-logging-3.3.1.Final.jar;D:\repository\com\fasterxml\classmate\1.3.4\classmate-1.3.4.jar;D:\repository\com\fasterxml\jackson\core\jackson-databind\2.8.10\jackson-databind-2.8.10.jar;D:\repository\com\fasterxml\jackson\core\jackson-annotations\2.8.0\jackson-annotations-2.8.0.jar;D:\repository\org\springframework\spring-web\4.3.14.RELEASE\spring-web-4.3.14.RELEASE.jar;D:\repository\org\springframework\spring-aop\4.3.14.RELEASE\spring-aop-4.3.14.RELEASE.jar;D:\repository\org\springframework\spring-beans\4.3.14.RELEASE\spring-beans-4.3.14.RELEASE.jar;D:\repository\org\springframework\spring-webmvc\4.3.14.RELEASE\spring-webmvc-4.3.14.RELEASE.jar;D:\repository\org\springframework\spring-expression\4.3.14.RELEASE\spring-expression-4.3.14.RELEASE.jar;D:\repository\org\projectlombok\lombok\1.16.20\lombok-1.16.20.jar;D:\repository\org\springframework\spring-core\4.3.14.RELEASE\spring-core-4.3.14.RELEASE.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2016.3.5\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain com.xmp.ElasticsearchApplication |
When we run the application, our data is stored at ${ELASTICSEARCH_HOME}\data\mkyong-cluster.
5.3 Maven package and run it. $ mvn clean package
$ java -jar target/elasticsearch-0.0.1-SNAPSHOT.jar
5.4 Test with cURL tool.
Terminal:
1 | $ curl "http://localhost:9200/xmp/news/_search?pretty=true" |
Terminal:
1 | $ curl "http://localhost:9200/xmp/news/_search?q=_id:3&pretty=true" |