5 在springboot中使用ElasticsearchTemplate 操作ElasticSearch(本机和远程服务器)
来源:互联网 发布:日本娱乐圈的黑暗知乎 编辑:程序博客网 时间:2024/05/21 14:49
第三篇和第四篇分别介绍了ElasticSearch的http请求命令和对java api的封装。像封装好的ES java api可以使用于普通的java项目里,来简化一些原生的命令。
springboot作为一个集成了N多功能的框架,自然不需要我们自己来封装工具类,它直接提供了ElasticsearchTemplate,和RedisTemplate一样是一个封装好的模板,当然你觉得ElasticsearchTemplate不好用的话,也可以去用自己的工具类。
现在用简单的例子来看看在本机和在远程服务器分别使用ElasticsearchTemplate进行数据操作。
一:使用本机的ElasticSearch
application.yml还是使用第一节时的yml文件
spring: data: elasticsearch: #cluster-name: #默认为elasticsearch #cluster-nodes: 112.74.72.18:9300 #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode properties: path: logs: ./elasticsearch/log #elasticsearch日志存储目录 data: ./elasticsearch/data #elasticsearch数据存储目录
来看一下cluster-nodes,这里如果直接注释掉,不配置nodes,那么默认就是本机!如果要使用远程服务器,或者局域网服务器,那就需要在这里配置IP:PORT。
可以配置多个,以逗号分隔,相当于集群。cluster-name如果想改为其他,那就需要在安装ElasticSearch时编辑配置文件,设置name。
配置好yml后,就可以直接使用template了,嗯,就是这么简单!
我们在Test类里,可以直接这么写:
@Autowired ElasticsearchTemplate elasticsearchTemplate;
就可以使用elasticsearchTemplate了。
在第一篇时我们已经插入了两条数据了,下面就直接查询:
@Test public void test() { SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(queryStringQuery("spring boot OR 书籍")).build(); List<Article> articles = elasticsearchTemplate.queryForList(searchQuery, Article.class); for (Article article : articles) { System.out.println(article.toString()); } }
运行就看到查询结果了,template里方法很多,各种各样的操作,就需要自己慢慢研究了。
为什么Template直接就能用了呢,其实类似于这样:
import org.elasticsearch.client.Client;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;/** * Created by wuwf on 17/6/2. */@Configurationpublic class ElasticSearchConfig { @Bean public ElasticsearchTemplate elasticsearchTemplate(Client client) { return new ElasticsearchTemplate(client); }}
client参数就是yml里配置的信息,springboot会自动赋给Client,然后传给template。不过上面这段代码如果不写,系统也会自动做好赋值。
像前面说的,如果不想用template,而想使用自己的Util工具类,譬如ElasticSearchUtil,就可以在上面的代码中用该类替换ElasticTemplate,这样就可以到处autowired你自己的util工具类了。
二:使用远程服务器
以阿里云CentOS7为例,安装ElasticSearch。
先安装好jdk8,并配置环境变量,这个就不提了。
安装ElasticSearch,使用如下命令:
下载rpm包:
wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.4/elasticsearch-2.3.4.rpm
安装
rpm -ivh elasticsearch-2.3.4.rpm
安装后先不要启动,我们做个配置
进入etc/elasticsearch,用vi编辑elasticsearch.yml。可以看到里面有cluster.name的地方,如果要做集群,那么集群内所有的cluster.name应该一致。我们找到network.host行,把注释放开,把后面的ip改为0.0.0.0,然后再把http.port那行的注释也放开即可。目的是为了在外网能访问到这台服务器公网IP的ElasticSearch服务。
启动服务service elasticsearch start
然后就可以在自己电脑用浏览器访问服务器ip:9200,就会看到一串欢迎语json的输出了。
配置好远程服务器后,在springboot里,也是修改yml文件,把cluster-nodes的注释放开,填上服务器的ip和端口即可。在项目里就能使用远程服务器的ElasticSearch服务了。
安装参考:http://www.jianshu.com/p/527a474bb6eb
https://www.biaodianfu.com/centos-7-install-elasticsearch.html
三:安装head插件,管理Elasticsearch
这个就是Head插件,在里面可以查看各个节点,index数据等,相当于一个数据库管理页面。
安装方法是:
/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
注意路径和配置yml的路径是不一样的,yml是在etc/elasticsearch里。
安装好后,访问ip:9200/_plugin/head/ 就能看到上面的界面了。
关于ElasticsearchTemplate的更多使用方法、复杂查询、条件查询,我还需要慢慢摸索一下,回头总结一下。
- 5 在springboot中使用ElasticsearchTemplate 操作ElasticSearch(本机和远程服务器)
- ElasticSearchRepository和ElasticSearchTemplate的使用
- 在Xshell中使用sz、rz进行本机和远程主机(或虚拟机)之间文件的传输
- 在Xshell中使用sz、rz进行本机和远程主机(或虚拟机)之间文件的传输
- 远程服务器和本机文件传输问题
- putty 使用之psftp.exe,远程服务器和本机之间上传下载。
- 6 ElasticsearchTemplate和JPA中ElasticsearchRepository的选择
- 从本机IIS中管理 远程服务器 IIS
- 在本机通过SQL远程操作数据库
- 远程服务器和本机间的文件拷贝
- 在SQLSERVER中创建DBLINK,操作远程服务器数据库
- 在PC中使用Telnet和VNC client远程登录Linux服务器的方法
- Elasticsearch实践(二)在Springboot微服务中集成搜索服务
- 使用ssh协议在github服务器和本机之间进行数据传输
- 搭建SpringBoot服务器,在公司内网中使用。
- 在shell中使用expect+ssh登陆远程服务器
- 如何在本机搭建SVN服务器和客户端
- ElasticSearch服务器操作命令
- Hibernate连接Oracle 的 Date字段时间时分秒丢失问题
- Lintcode——两数组的交
- struts2.5配置时action无法访问错误
- koa源码
- document.body.scrollWidth、document.documentElement.scrollWidth系列宽高值对比
- 5 在springboot中使用ElasticsearchTemplate 操作ElasticSearch(本机和远程服务器)
- web安全注意点和应对方案
- Intellij Idea 创建 Maven 工程
- Android Volley框架定制PostUploadRequest上传文件(图片)
- marsboard-a20-ubuntu的配置V1.0(分色排版)
- 用WordNet实现中文情感分析
- 菜鸟学git的基本命令及常见错误
- [Unity&JSON]如何在同一个JSON文档中存入多个不同类型的数据
- ScrollView嵌套下ListView或ExpandableListView的高度自适应