谷粒商城微服务分布式高级篇——06.ElasticSearch 课件讲义


二、 Docker安装

1、下载镜像文件

docker pull elasticsearch:7.4.2存储和检索数据

docker pull kiana:7.4.2可视化检索数据

2、创建实例

1、 Elasticsearch

mkdir-p /mydata/elasticsearch/config

mkdir-p/mydata/elasticsearch/data

Echo "http.host0.0.0.0">>/mydata/elasticsearch/config/elasticsearch.yml

 

docker run-name elasticsearch -p 9200:9200 -p 9300:9300 \

-e "discovery.type=single-node" \

-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \

-v /mydata/elasticsearch/config/elasticsearch.yml:usr/share/elasticsearch/config/elasticsearch.yml \

-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \

-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \

-d elasticsearch:7.4.2

 

以后再外面装好插件重启即可;

 

特别注意

-e ES_JAVA_ OPTS="-Xms256m Xmx256m"\ 测试环境下,设置ES的初始内存和最大内存,否则导致过大启动不了ES

 

docker update --restart=always xxx     docker中容器开机自启动

2、Kibanal

Docker run -name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 \

-d kibana:7.4.2

 

http:/192.168.56.10:9200一定改为自己虚拟机的地址

 

三、初步检索

1、_cat

GET /_cat/nodes:查看所有节点

GET /_cat/health:查看es健康状况

GET /_cat/master:查看主节点

GET /_cat/indices:查看所有索引 show databases;

 

2、素引一个文档(保存)

保存一个数据,保存在哪个索引的哪个类型下,指定用哪个唯一标识

PUT customer/ external/1 ;在 customer索引下的 external类型下保存1号数据为

PUT customer/external/1

{

name": "John Doe

}

PUT和POST都可以,

POST新增。如果不指定id,会自动生成id。指定id就会修改这个数据,并新增版本号

 

PUT可以新增可以修改。PUT必须指定id;由于PUT需要指定id,我们一般都用来做修改

操作,不指定id会报错。

  1. 査询文档

GET customer/external/1

结果:

{

" index":" customer'",/在哪个素引

"type":" external",/在哪个类型

"id":"1",//记录id

"version": 2,//版本号

"_seq_no":1,//并发控制字段,每次更新就会+1,用来做乐观锁

"primary_term":1,//同上,主分片重新分配,如重启,就会变化

"found": true

"_source":{   //真正的内容

"name":"John Doe"

}

更新携带?if_seq_no=0&if_ primary_term=1

  1. 更新文档

 

POST customer/external/1/_update

{

"doc":{

"name": "John Doew

}

}

或者

POST customer/external/1

{

"name":"John Doe2"

}

或者

PUT customer/external/1

{

"name":"John Doe"

}

 

 

不同:POST 带_update操作会对比源文档数据,如果相同不会有什么操作,文档 version不增加

POST 不带_update总会将数据重新保存并增加 version版本

PUT操作总会将数据重新保存并增加 version版本;

带_update对比元数据如果一样就不进行任何操作

看场景;

对于大并发更新,不带 update

对于大并发査询偶尔更新,带 update;对比更新,重新计算分配规则。

 

 

  1. 更新同时增加属性

POST customer/external/1/update

{

"doc":{"name": "Jane Doe","age":20}

}

PUT和POST不带_update直接更新

 

5、删除文档&索引

DELETE customer/external/1

DELETE customer

6、批量API

POST customer/external/_bulk

{"index":{"_id":"1"}}

{"name":"John Doe"}

{"index":{"_id":"2"}}

{"name":"Jane Doe"}

 

语法格式

{action: {metadata}}\n

{request body       }\n

 

{action: {metadata}}\n

{request body       }\n

复杂实例

POST /_bulk

{"delete":{"_index": "website","_type": "blog", "_id":"123"}}

{"create": {"_index": "website", "_type": "blog", "_id": 123"}}

{"title":  "My first blog post"}

{"index": ("_index": "website", "_type": "blog"}}

{"title":"My second blog post"}

{"update": {"_index": "website,"_type": "blog", "_id": "123", "retry on conflict": 3) 

{"doc":{ "title":"My updated blog post"}}

  • // retry on conflict重试次数es5内容

 

bulk API以此按顺序执行所有的 action(动作)。如果一个单个的动作因任何原因而失败,

它将继绩处理它后面剩余的动作。当 bulk API返回时,它将提供毎个动作的状态(与发送

的顺序相同),所以您可以检査是否一个指定的动作是不是失败了。

7、样本测试数据

我准备了一份顾客银行账户信息的虚构的JSoN文档样本。每个文档都有下列的 schema

(模式):

 

{
          "account_number" : 25,
          "balance" : 40540,
          "firstname" : "Virginia",
          "lastname" : "Ayala",
          "age" : 39,
          "gender" : "F",
          "address" : "171 Putnam Avenue",
          "employer" : "Filodyne",
          "email" : "virginiaayala@filodyne.com",
          "city" : "Nicholson",
          "state" : "PA"
        }

 

https://raw.githubusercontent.com/elastic/elasticsearch/master/docs/src/test/resources/accounts.json

=true导入测试数据

POST bank/account/_bulk

测试数据

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值