Elasticsearch 概述
Elasticsearch 概述
- The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。
- Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。
Elasticsearch 是什么
- https://www.elastic.co
- Elasticsearch是一个(近乎)实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据, 它不但稳定、可靠、快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的,它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。
- Elasticsearch是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架.
全文搜索引擎
Google,百度类的网站搜索,它们都是根据网页中的关键字生成索引,我们在搜索的时候输入关键字,它们会将该关键字即索引匹配到的所有网页返回;还有常见的项目中应用日志的搜索等等。对于这些非结构化的数据文本,关系型数据库搜索不是能很好的支持。
一般传统数据库,全文检索都实现的很鸡肋,因为一般也没人用数据库存文本字段。进行全文检索需要扫描整个表,如果数据量大的话即使对 SQL 的语法优化,也收效甚微。建立了索引,但是维护起来也很麻烦,对于 insert 和 update 操作都会重新构建索引。
基于以上原因可以分析得出,在一些生产环境中,使用常规的搜索方式,性能是非常差的:
- 搜索的数据对象是大量的非结构化的文本数据。
- 文件记录量达到数十万或数百万个甚至更多。
- 支持大量基于交互式文本的查询。
- 需求非常灵活的全文搜索查询。
- 对高度相关的搜索结果的有特殊需求,但是没有可用的关系数据库可以满足。
- 对不同记录类型、非文本数据操作或安全事务处理的需求相对较少的情况。
为了解决结构化数据搜索和非结构化数据搜索性能问题,我们就需要专业,健壮,强大的全文搜索引擎
这里说到的全文搜索引擎指的是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。
Lucene
Lucene是Apache Jakarta家族中的一个开源项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎、索引引擎和部分文本分析引擎。
Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具,是目前最为流行的基于 Java 开源全文检索工具包
数据总体分为两种:
结构化数据
: 指具有固定格式或有限长度的数据,如数据库、元数据等。非结构化数据
: 指不定长或无固定格式的数据,如邮件、word文档等磁盘上的文件。
对于结构化数据的全文搜索很简单,因为数据都是有固定格式的,例如搜索数据库中数据使用SQL语句即可。
对于非结构化数据,有以下两种方法:
顺序扫描法
(Serial Scanning)全文检索
(Full-text Search)
顺序扫描法如果要找包含某一特定内容的文件,对于每一个文档,从头到尾扫描内容,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下一个文件,直到扫描完所有的文件,因此速度很慢。
全文检索将非结构化数据中的一部分信息提取出来,重新组织,使其变得具有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。
- 例如字典的拼音表和部首检字表就相当于字典的索引,通过查找拼音表或者部首检字表就可以快速的查找到我们要查的字。
这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)
Elasticsearch And Solr
- Lucene 是 Apache 软件基金会 Jakarta 项目组的一个子项目,提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在 Java 开发环境里 Lucene 是一个成熟的免费开源工具。就其本身而言,Lucene 是当前以及最近几年最受欢迎的免费 Java 信息检索程序库。但 Lucene 只是一个提供全文搜索功能类库的核心工具包,而真正使用它还需要一个完善的服务框架搭建起来进行应用。
- 目前市面上流行的搜索引擎软件,主流的就两款:Elasticsearch 和 Solr, 这两款都是基于 Lucene 搭建的,可以独立部署启动的搜索引擎服务软件。由于内核相同,所以两者除了服务器安装、部署、管理、集群以外,对于数据的操作 修改、添加、保存、查询等等都十分类似。
- 在使用过程中,一般都会将 Elasticsearch 和 Solr 这两个软件对比,然后进行选型。这两个搜索引擎都是流行的,先进的的开源搜索引擎。它们都是围绕核心底层搜索库 - Lucene 构建的 - 但它们又是不同的。像所有东西一样,每个都有其优点和缺点:
特征 | solr/SolrCloud | ElasticSearch |
---|---|---|
社区和开发者 | Apache 软件基金和社区支持 | 单一商业实体及员工 |
节点发现 | Apache Zookeeper | 自身带有分布式协调管理功能 |
Elasticsearch Or Solr
Elasticsearch 和 Solr 都是开源搜索引擎,那么我们在使用时该如何选择呢?
Google 搜索趋势结果表明,与 Solr 相比,Elasticsearch 具有很大的吸引力,但这并不意味着 Apache Solr 已经死亡。虽然有些人可能不这么认为,但 Solr 仍然是最受欢迎的搜索引擎之一,拥有强大的社区和开源支持。
与 Solr 相比,Elasticsearch 易于安装且非常轻巧。此外,你可以在几分钟内安装并运行 Elasticsearch。但是,如果 Elasticsearch 管理不当,这种易于部署和使用可能会成为一个问题。基于 JSON 的配置很简单,但如果要为文件中的每个配置指定注释,那么它不适合您。总的来说,如果你的应用使用的是 JSON,那么 Elasticsearch 是一个更好的选择。否则,请使用 Solr,因为它的 schema.xml 和 solrconfig.xml 都有很好的文档记录。
Solr 拥有更大,更成熟的用户,开发者和贡献者社区。ES 虽拥有的规模较小但活跃的用户社区以及不断增长的贡献者社区。Solr 贡献者和提交者来自许多不同的组织,而 Elasticsearch 提交者来自单个公司。
Solr 更成熟,但 ES 增长迅速,更稳定。
Solr 是一个非常有据可查的产品,具有清晰的示例和 API 用例场景。 Elasticsearch 的文档组织良好,但它缺乏好的示例和清晰的配置说明。
那么,到底是 Solr 还是 Elasticsearch ?
- 有时很难找到明确的答案。无论您选择 Solr 还是 Elasticsearch,首先需要了解正确的用例和未来需求。总结他们的每个属性。
由于易于使用,Elasticsearch 在新开发者中更受欢迎。一个下载和一个命令就可以启动一切。
如果除了搜索文本之外还需要它来处理分析查询,Elasticsearch 是更好的选择
如果需要分布式索引,则需要选择 Elasticsearch。对于需要良好可伸缩性和以及性能分布式环境,Elasticsearch 是更好的选择。
Elasticsearch 在开源日志管理用例中占据主导地位,许多组织在 Elasticsearch 中索引它们的日志以使其可搜索。
如果你喜欢监控和指标,那么请使用 Elasticsearch,因为相对于 Solr,Elasticsearch 暴露了更多的关键指标
Elasticsearch 应用案例
GitHub: 2013 年初,抛弃了 Solr,采取 Elasticsearch 来做 PB 级的搜索。“GitHub 使用 Elasticsearch 搜索 20TB 的数据,包括 13 亿文件和 1300 亿行代码”。
维基百科使用Elasticsearch来进行全文搜做并高亮显示关键词,以及提供search-as-you-type、did-you-mean等搜索建议功能。
SoundCloud:“SoundCloud 使用 Elasticsearch 为 1.8 亿用户提供即时而精准的音乐搜索服务”。
百度:目前广泛使用 Elasticsearch 作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。目前覆盖百度内部 20 多个业务线(包括云分析、网盟、预测、文库、直达号、钱包、风控等),单集群最大 100 台机器,200 个 ES 节点,每天导入 30TB+ 数据。
新浪:使用 Elasticsearch 分析处理 32 亿条实时日志。
阿里:使用 Elasticsearch 构建日志采集和分析体系。
Stack Overflow:解决 Bug 问题的网站,全英文,编程人员交流的网站。
Elasticsearch的特性
- ElasticSearch是基于Lucene开发的分布式搜索框架,包含如下特性:
- 分布式索引、搜索。
- 索引自动分片、负载均衡。
- 自动发现机器、组建集群。
- 支持Restful 风格接口。
- 配置简单等。
- 海量数据的存储。
Elasticsearch框架图
节点Node
- 一个Elasticsearch的运行实例,集群的其中一个构成单元。
正排索引
维护文档id到内容、单词的关联关系,例如
文档id 文档内容 1 中国驻洛杉矶领事馆遭到枪击 嫌犯已自首 2 韩国警察平均每天扣1艘中国渔船
倒排索引
维护单词到文档id的关联关系,例如
单词 文档id 中国 1,2 韩国 2 洛杉矶 1
Elsaticsearch的数据结构
Es对数据的存储采用是:
Index(索引)——Mysql(Table)
Document(文档)——-Mysql(Table中一行数据)
选择索引(Es7.0后 ,彻底遗弃type,只有索引和文档),存储的数据就叫文档
一个索引只存储一种类型的数据
文档Document
用户存储在es中的数据文档,相当于mysql的表中的一行,Json结构形式,由字段组成,常见数据类型如下:
1
2
3
4
5
6字符串: text、keyword,text是分词,keyword是不分词的
数值型: long、integer、short、byte、double、float、half_float、scaled_float
布尔: boolean
日期: date
二进制: binary
范围类型: integer_range、float_range、long_range、double_range、date_range
文档的元数据: 用于标注文档的相关信息
1 | _index: 文档所在的索引名 |
索引 Index
由具有相同字段的文档列表组成,相当于mysql中的表。
每个索引都有自己的mapping定义,用于定义字段名和类型
索引中存储着具有相同结构的文档
Elasticsearch总结
ES可以实现海量数据的存储(PB级别)、实现快速搜索(倒排索引)、实现统计分析(热词分析)
高并发下的海量数据的存储方案:
基于ES可以实现全站搜索、海量数据存储,也可以结合其他工具提供日志分析。
通过beat收集日志,经过分析然后同步到Elasticsearch,在Kibana中提供web界面可视化。
beat结合logstash可以更加丰富数据。
Docker安装ES
Docker安装Elasticsearch
创建并运行容器
1
docker run -d --name es9200 -e "discovery.type=single-node" -p 9200:9200 elasticsearch:7.12.1
访问测试
云服务器: 开放安全组: 9200
如果启动容器报错:
1
2# 这个错误意思: 当前默认可用内存太小了,需要设置的大一点
max virtual monery xxxx [65530] is to low在服务器上执行下面的命令:
1
2
3
4
5
6
7vim /etc/sysctl.conf
# 输入:
vm.max_map_count=655300
# 重新加载
sysctl -p
# 重新启动容器:
docker start es9200
Docker安装kibana
kibana: 是一个免费且开放的用户界面,能够让对 Elasticsearch 数据进行可视化,还可以进行各种操作,跟踪查询负载,到理解请求如何流经整个应用,都能轻松完成。
ELK:标准化日志平台
- E:Elasticsearch 作为日志存储和分析框架,
- L:Logstash 作为日志采集框架,获取日志存储到Es,
- K:Kibana 可视化网站,可以通过网页操作ES
目前的日志服务推荐: 云解决方案:
- 阿里云-日志服务(SLS): 行业领先的日志大数据解决方案,一站式提供数据收集、清洗、分析、可视化和告警功能。全面提升海量日志处理能力,实时挖掘数据价值,智能助力研发/运维/运营/安全等场景
查询es的地址
1
2docker inspect es9200
# 查看Networks 下的 bridge 的 IPAddress创建并运行容器
1
docker run -d --name kibana5601 -p 5601:5601 kibana:7.1.1
修改配置文件
1
2
3
4docker exec -it kibana5601 bash
vi config/kibana.yml
# 更改es的地址访问测试
- 开放端口号: 5601
- http://192.168.61.45:5601/app/kibana
安装IK中文分词
- IK中文分词器 可以实现中文的分词
下载分词器 https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.1.1
- 需要和es的版本对应,es:7.1.1 所以: ik:V7.1.1
上传并设置映射
1
docker cp /usr/local/elasticsearch-analysis-ik-7.1.1.zip es9200:/usr/share/elasticsearch/plugins
解压IK分词
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15docker exec -it es9200 bash
mkdir /usr/share/elasticsearch/plugins/ik
mv /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-7.1.1.zip /usr/share/elasticsearch/plugins/ik
cd /usr/share/elasticsearch/plugins/ik
unzip elasticsearch-analysis-ik-7.1.1.zip
rm -rf elasticsearch-analysis-ik-7.1.1.zip
exit
docker restart es9200查看安装的插件
1
2docker exec -it es9200 bash
./bin/elasticsearch-plugin list
安装拼音插件
进入容器内部
1
docker exec -it es9200 bash
下载拼音插件
1
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v7.1.1/elasticsearch-analysis-pinyin-7.1.1.zip
重启和查询插件
1
2docker exec -it es9200 bash
./bin/elasticsearch-plugin list
windows 安装 ES
下载软件
Elasticsearch 的官方地址:https://www.elastic.co/cn/
Elasticsearch 最新的版本是 7.11.2(截止 2021.3.10),我们选择 7.8.0 版本(最新版本半年前的版本)
下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
安装软件
Windows 版的 Elasticsearch 的安装很简单,解压即安装完毕,注意文件夹路径一定不能包含空格,解压后的 Elasticsearch 的目录结构如下
目录 含义 bin 可执行脚本目录 config 配置目录 jdk 内置 JDK 目录 lib 类库 logs 日志目录 modules 模块目录 plugins 插件目录 解压后,进入 bin 文件目录,点击 elasticsearch.bat 文件启动 ES 服务
- 注意:9300 端口为 Elasticsearch 集群间组件的通信端口,
- 9200 端口为浏览器访问的 http 协议 RESTful 端口。
打开浏览器(推荐使用谷歌浏览器),输入地址:http://localhost:9200,测试结果
可选操作
注册成服务
将ES的安装目录下bin加入到环境变量path中
D:\elasticsearch-7.8.0\bin
1
2
3
4
5
6
7
8# 注册成服务
elasticsearch-service.bat install es
# 启动服务
net start es
# 关闭服务
net stop es
# 注销服务
elasticsearch-service.bat remove
7.x自带了jdk,我们可以手动设置jdk: 修改bin\elasticsearch-env.bat
- 在if defined JAVA_HOME前加入
set JAVA_HOME=E:\elastic\elasticsearch-7.6.2\jdk
- 在if defined JAVA_HOME前加入
安装kibana
下载同es相同版本的kibana, 默认情况下,解压后将得到一个kibana-7.15.0-windows-x86_64文件夹,我们称其为$KIBANA_HOME目录。打开Windows平台的命令行或您喜欢的终端程序,cd进入$KIBANA_HOME目录
通过配置文件配置Kibana
默认情况下,Kibana将从$KIBANA_HOME/config/kibana.yml文件中加载配置
设置elasticsearch地址,多个以逗号分隔
1
elasticsearch.hosts: ["http://localhost:9200"]
设置国际化,中文
1
i18n.locale: "zh-CN"
命令行启动Kibana
1
.\bin\kibana.bat
默认情况下,Kibana启动后将在前台运行并输出标准日志,可以通过Ctrl-C来停止Kibana的运行。
安装IK分词器
ElasticSearch 默认采用标准分词器(StandardAnalyzer), 单个字分词 ,效果很差。
所以我们需要用第三方中文分词器IK-analyzer,Lucene的IK分词器早在2012年已经没有维护了,现在我们要使用的是在其基础上维护升级的版本,并且开发为Elasticsearch的集成插件了,与Elasticsearch一起维护升级,版本也保持一致。下载地址如下: https://github.com/medcl/elasticsearch-analysis-ik/releases
只需将其解压即可使用,我们在elasticsearch的目录下找到plugins文件夹,然后新建ik文件夹,将其文件解压到ik文件夹即可。
然后重启elasticsearch即可在日志看到ik被导入了
1
[2021-10-14T17:09:43,979][INFO ][o.e.p.PluginsService ] [CN5XXXXRF] loaded plugin [analysis-ik]
自增扩展词和停用词文件: 在ik目录下的config目录下有个IKAnalyzer.cfg.xml文件
双击进去即可看到在哪里配置自己的停用词典文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict"></entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
可能问题
Elasticsearch 是使用 java 开发的,且 7.8 版本的 ES 需要 JDK 版本 1.8 以上
默认安装包带有 jdk 环境,如果系统配置 JAVA_HOME,那么使用系统默认的 JDK,如果没有配置使用自带的 JDK,一般建议使用系统配置的 JDK。
双击启动窗口闪退,通过路径访问追踪错误,如果是“空间不足”,请修改
config/jvm.options
配置文件1
2
3
4
5
6# 设置 JVM 初始内存为 1G。此值可以设置与-Xmx 相同,以避免每次垃圾回收完成后 JVM 重新分配内存
# Xms represents the initial size of total heap space
# 设置 JVM 最大可用内存为 1G
# Xmx represents the maximum size of total heap space
-Xms1g
-Xmx1g
CentOS8 安装 ES
软件下载
软件安装
将下载的软件解压缩
1
2
3
4
5
6创建目录
mkdir /opt/module
解压缩
tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz -C /opt/module
改名
mv /opt/module/elasticsearch-7.8.0 /opt/module/elasticsearces创建用户
- 因为安全问题,Elasticsearch 不允许 root 用户直接运行,所以要创建新用户,在 root 用户中创建新用户
1
2
3
4
5useradd es #新增 es 用户
passwd es #为 es 用户设置密码
userdel -r es #如果错了,可以删除再加
chown -R es:es /opt/module/es #文件夹所有者修改配置文件 (root 用户下)
修改 /opt/module/es/config/elasticsearch.yml 文件
1
2
3
4
5
6# 加入如下配置
cluster.name: elasticsearch
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]修改 /etc/security/limits.conf
1
2
3
4# 在文件末尾中增加下面内容
# 每个进程可以打开的文件数的限制
es soft nofile 65536
es hard nofile 65536修改/etc/security/limits.d/20-nproc.conf
1
2
3
4
5
6
7
8# 在文件末尾中增加下面内容
# 每个进程可以打开的文件数的限制
es soft nofile 65536
es hard nofile 65536
# 操作系统级别对每个用户创建的进程数的限制
# 注:* 带表 Linux 所有用户名称,用户退出后重新登录生效
* hard nproc 4096
* soft nproc 4096
1 |
|
重新加载 sysctl
1
sysctl -p
1 |
|
启动时,会动态生成文件,如果文件所属用户不匹配,会发生错误,需要重新进行修改用户和用户组
1
chown -R es:es /opt/module/es #文件夹所有者
测试软件
- 浏览器中输入地址:http://sun01:9200/
访问失败查看防火墙是否放行 9200 端口
1
2
3
4
5
6
7#暂时关闭防火墙
systemctl stop firewalld
#关闭防火墙,永久性生效,重启后不会复原
systemctl enable firewalld.service
#关闭防火墙,永久性生效,重启后不会复原
systemctl disable firewalld.service
Kibana可视化操作ES
查看索引
查看索引管理器
为索引设置可视化, 设置可视化之后,就可以通过Kibana进行可视化的操作
Elasticsearch基本应用
- ES存储数据的,常用的操作: 增删改查
- Java程序操作ES的方式: 1.原生 Transport 2.Spring Data Elasticsearch
RestfulApi操作ES
打开开发者工具
常用的Restful API:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61#创建索引
PUT /es211
#删除索引
DELETE /es211
#创建索引
PUT /es211-lx
#设置索引的Mapping格式,定义文档格式
PUT /es211-lx/_mapping
{
"properties": {
"_class": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"id": {
"type": "long"
},
"name":{
"type":"text"
},
"sex":{
"type":"text"
},
"ctime":{
"type":"date"
}
}
}
#新增文档
POST /es211-lx/_doc/1
{
"id":1,
"name":"帅帅",
"sex":"男人",
"ctime":"2020-05-11"
}
POST /es211-lx/_doc/2
{
"id":2,
"name":"琪琪",
"sex":"女人",
"ctime":"2020-05-11"
}
#修改文档
PUT /es211-lx/_doc/2
{
"id":2,
"name":"琪琪",
"sex":"女生",
"ctime":"2020-05-11"
}
#查询单个文档
GET /es211-lx/_doc/2
#删除文档
DELETE /es211-lx/_doc/2
Thransport
Thransport是Es官方推荐的一种用法,可以在Java代码实现对es的CRUD操作
使用步骤:
依赖jar包
1
2
3
4
5
6
7
8<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>编写代码,实现操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32public static void main(String[] args) throws IOException {
//1.实例化客户端对象 连接服务器
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("39.105.189.141",
9200, "http")));
//2.实现操作
//新增或修改数据 如果_id存在就是修改,不存在就是新增
Student student=new Student(3,"双奔","man");
IndexResponse response1=client.
index(new IndexRequest("es2008").//设置要操作的索引名称
id(student.getId()+"").//为_id赋值 唯一
source( //设置操作的数据源
JSON.toJSONString(student),
XContentType.JSON),
RequestOptions.DEFAULT);
System.err.println(response1.status().toString());
// //删除
DeleteResponse response2=client.delete(
new DeleteRequest("es2008","1"),RequestOptions.DEFAULT);
System.err.println(response2.status().toString());
//修改
Student student2=new Student(3,"Double Ben","WoMan");
UpdateResponse response3=client.update(new UpdateRequest("es2008","3").
doc(JSON.toJSONString(student2),XContentType.JSON),
RequestOptions.DEFAULT);
System.err.println(response3.status().toString());
//查询
GetResponse response4=client.get(new GetRequest("es2008","2"),RequestOptions.DEFAULT);
System.err.println(response4.getSourceAsString());
//3.关闭
client.close();
}运行测试, 查看操作是否成功