Elasticsearch之安装使用及基本用法篇

安装java 8

Elasticsearch(简称es) 需要依赖于java 8,官方推荐是Oracle JDK version 1.8.0_131。没有按照的需要按照指引安装java 8, http://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html;
如果已安装,请输入以下命令查看已安装的版本:

java -version

安装Elasticsearch

Elasticsearch官方下载页面:http://www.elastic.co/downloads

压缩包安装

适用于linux, 免去安装,直接解压即可使用。
安装步骤:

curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.1.tar.gz
tar -xvf elasticsearch-6.6.1.tar.gz
cd elasticsearch-6.6.1/bin
./elasticsearch

这样Elasticsearch就启动了,默认端口是9200.

msi文件安装

适用于windows.
安装文件下载地址: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.1.msi
之后按照安装包的提示就可以安装了,可以在安装选项选择端口,角色,安装地址,插件等等。

设置集群名称和节点名称

主要是搭建集群时使用,单节点使用默认的就好,如果有需要,可以按照以下命令设置集群名称和节点名称。

./elasticsearch -Ecluster.name=my_cluster_name -Enode.name=my_node_name

与es的交互

与es的交互主要依靠REST API,所有支持REST API的工具都可以,例如curl。
也可以通过kibana与es交互,不过这样要安装kibana,甚是麻烦,这里选择Postman作为工具。

基础操作

查看节点状态

查看节点状态

curl -X GET \
  'http://127.0.0.1:9200/_cat/health?v=' \
  -H 'Postman-Token: 59477b21-af6d-4184-81ef-e03bdbdf13f5' \
  -H 'cache-control: no-cache'

返回结果为:

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1551776706 17:05:06  elasticsearch yellow          1         1     82  82    0    0       82             0                  -                 50.0%

我本地的集群名字为elasticsearch(系统默认的), 状态为yellow。
es的状态标识分别为: green, yellow, red。
green的意思是集群状态良好,什么都很正常。
yellow的意思是集群内数据都能使用,查询,插入都能工作,但是数据还没分配副本(这里因为是单节点,而es默认是要有一个副本节点的,这是为了数据的高可用考虑,所以导致节点的数据没有副本,所以状态是yellow,但是现在不耽误使用)。
red的意思就是有问题了,数据不能使用,系统也不能正常工作,具体的异常原因需要查看日志具体分析。

查看集群的节点信息
curl -X GET \
  'http://127.0.0.1:9200/_cat/nodes?v=' \
  -H 'Postman-Token: ff2e176a-5567-489e-9a18-d914c484af4b' \
  -H 'cache-control: no-cache'

得到输出:

ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1            8          51   3                          mdi       *      WNT123

可以看到节点的ip,cpu负载,节点名称等信息。

查看所有索引
curl -X GET \
  'http://127.0.0.1:9200/_cat/indices?v=' \
  -H 'Postman-Token: 35134bec-30fa-4e75-9cd3-b6cd168aadcb' \
  -H 'cache-control: no-cache'

输出(示例):

health status index                         uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   my_index                      bnszPUQTQ5-Q8UVCT3Naog   5   1          1            0        4kb            4kb

通过这个命令可以清楚看到所有的索引信息,数据的条数啊,数据占了多大空间啊,这些信息都很有用。
当然你也可能没有具体的索引输出,因为你刚安装还没有进行增加索引。

创建索引

创建一个名称为customer的索引。

curl -X PUT \
  'http://127.0.0.1:9200/customer?pretty=' \
  -H 'Postman-Token: de426136-def4-4733-9d92-992052884bf6' \
  -H 'cache-control: no-cache'

然后再执行:

curl -X GET \
  'http://127.0.0.1:9200/_cat/indices?v=' \
  -H 'Postman-Token: 35134bec-30fa-4e75-9cd3-b6cd168aadcb' \
  -H 'cache-control: no-cache'

就可以看到刚创建的索引的信息了。
如果不出意外的话,这时候你的es状态就该是yellow了(刚安装没数据时是green),原因就是上面所说的,数据没有副本。

向索引中插入一条数据

插入之前最好先声明字段的数据类型,现在初学es可以不用太过注意,但是以后正式做项目一定一定要记得插入数据之前,先把数据类型确定,因为你不声明,es就自己判断了,到时候int类型给你声明称float,datetime声明成字符串,然后你恰好还塞了数据进去,呵呵哒,这个索引就不要想要了,es是不支持修改字段的数据类型的,到时候你还想要数据就只能取巧重建索引了(把数据拷到另一个索引,然后删除重建这个索引,再把另一个索引的数据拷过来)。

curl -X PUT \
  http://127.0.0.1:9200/customer/_mapping/doc \
  -H 'Content-Type: application/json' \
  -H 'Postman-Token: 59e71700-dfd3-4638-81b1-d25680329ff3' \
  -H 'cache-control: no-cache' \
  -d '{"properties" : {
        "name" : {"type" : "keyword" }
 }   }'

doc是默认的文档名称,你可以修改成你想要的名字。
插入一条数据:

curl -X POST \
  'http://127.0.0.1:9200/customer/doc/1?pretty=' \
  -H 'Content-Type: application/json' \
  -H 'Postman-Token: b021a46b-a191-4e21-bffd-70cb51b8973b' \
  -H 'cache-control: no-cache' \
  -d '{
  "name": "John Doe"
}'

输入类似这样的:

{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

http://127.0.0.1:9200/customer/doc/1 这里的1就是这条数据的id,这里显式指定,不指定的话,es默认创建一个复杂的字符串当作id.

查看数据

查看我们插入的数据,指定id为1的数据。

curl -X GET 'http://127.0.0.1:9200/customer/doc/1?pretty='

输出:

{
    "_index": "customer",
    "_type": "doc",
    "_id": "1",
    "_version": 1,
    "found": true,
    "_source": {
        "name": "John Doe"
    }
}

数据在返回数据的_source字段里面。

修改数据
curl -X POST \
  'http://127.0.0.1:9200/customer/doc/1?pretty=' \
  -H 'Content-Type: application/json' \
  -H 'Postman-Token: b021a46b-a191-4e21-bffd-70cb51b8973b' \
  -H 'cache-control: no-cache' \
  -d '{
  "name": "ha ha ha"
}'

修改数据和增加数据很像,方法可以使用POST也可以使用PATCH,增加数据不一定要指定id,但是修改数据是一定要指定id的,不然它不知道修改哪条数据。
也可以使用这样更新部分数据:

curl -X POST \
  'http://127.0.0.1:9200/customer/doc/1/_update?pretty=' \
  -H 'Content-Type: application/json' \
  -d '{
  "doc": { "age": 122}
}'
删除数据
curl -X DELETE 'http://127.0.0.1:9200/customer/doc/1?pretty='

这样就可以删除一条数据,删除数据同样需要指定id.(url是不变的,就只是修改个方法就能起到不同的作用)。

删除索引

删除索引:

curl -X DELETE http://127.0.0.1:9200/customer

这样这个索引就被删除了,里面的数据也都会被清空。

API规律

API的形式类似于 <HTTP方法> es的ip和端口/<索引>/<文档>/

结尾

最最基础的入门知识差不多就这些了,深入下去要学习的主要是es的简单查询,高级查询,集群的管理还有一些其他的功能,后续慢慢更新吧。
未完待续~~~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值