版权声明:本文为博主原创文章,未经博主允许不得转载,如需转载请在明显处标明出处! https://blog.csdn.net/qq_36291682/article/details/88084796
- pom.xml
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-elasticsearch</artifactId> </dependency>
- 配置文件
spring.data.elasticsearch.cluster-name=elasticsearch spring.data.elasticsearch.cluster-nodes=192.168.2.118:300
https://github.com/spring-projects/spring-data-elasticsearch
这里speing-data-elasticsearch 是3版本
看上面的对照关系 需要使用6版本的elasticsearch
-
两种用法
1)ElasticsearchRepositorypackage com.example.springboot.entity; /** * @author LM * @create 2019-03-03 10:06 */ @Document(indexName = "suoyin",type = "book") public class Book { private Integer id; private String bookName; private String author; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } @Override public String toString() { return "Book{" + "id=" + id + ", bookName='" + bookName + '\'' + ", author='" + author + '\'' + '}'; } }
package com.example.springboot.repository; import com.example.springboot.entity.Book; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; /** * @author LM * @create 2019-03-03 10:05 */ public interface BookRepository extends ElasticsearchRepository<Book,Integer> { }
BookRepository bookRepository; @Test public void save(){ Book book = new Book(); bookRepository.index(book); }
运行 访问索引下的数据:
执行的时候报错了 也可以说是配置好以后启动的时候报错了
9300端口不能访问!!!!
解决办法: 创建配置文件 启动的时候指定配置文件cd /opt mkdir es cd es mkdir data touch es.yml vi es.yml
es.yml
#集群名 cluster.name: escluster #节点名 node.name: node-111 #设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0, #指绑定这台机器的任何一个ip network.bind_host: 0.0.0.0 #设置其它节点和该节点交互的ip地址,如果不设置它会自动判断, #值必须是个真实的ip地址 network.publish_host: 192.168.2.118 #设置对外服务的http端口,默认为9200 http.port: 9200 #设置节点之间交互的tcp端口,默认是9300 transport.tcp.port: 9300 #是否允许跨域REST请求 http.cors.enabled: true #允许 REST 请求来自何处 http.cors.allow-origin: "*" #节点角色设置 node.master: true node.data: true #有成为主节点资格的节点列表 discovery.zen.ping.unicast.hosts: ["192.168.2.118:9300"] #集群中一直正常运行的,有成为master节点资格的最少节点数(默认为1) # (totalnumber of master-eligible nodes / 2 + 1) discovery.zen.minimum_master_nodes: 1
启动的时候用-v
-v 本地目录/文件:容器目录/文件 :作用是将本地到文件或文件夹挂载到容器的指定文件或文件夹中docker run -d -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms512m -Xmx512m" --name ES03 -v /opt/es/es.yml:/usr/share/elasticsearch/config /elasticsearch.yml 5acf0e8da90b
可能会出现:
maxvirtual memory areas vm.max_map_count [65530] istoo low, increase to at least [262144]
解决办法:vi /etc/sysctl.conf #在sysctl.conf中添加一行 vm.max_map_count=655300
保存并退出后执行
sysctl -p
再次重新启动elasticsearch 就可以了 !!!
重新执行save操作@Autowired BookRepository bookRepository; @Test public void save(){ Book book = new Book(); book.setId(12); book.setAuthor("李啦啦啦"); book.setBookName("踩踩踩"); bookRepository.index(book); }
postman查找
与jpa一样 也可以自定义
例子:/** * @author LM * @create 2019-03-03 10:05 */ public interface BookRepository extends ElasticsearchRepository<Book,Integer> { public List<Book> findBooksByBookNameLike(String bookeName); }
@Test public void get(){ List<Book> li= bookRepository.findBooksByBookNameLike("踩"); System.out.println("========================"); for (Book b : li){ System.out.println(b); } System.out.println("======================"); }
结果:
参考这里好多种表达方式:
https://docs.spring.io/spring-data/elasticsearch/docs/3.1.5.RELEASE/reference/html/
2)ElasticsearchTemplate 官方文档都有使用案例