0%

Elasticsearch学习总结

ElasticSearch 基本概念

节点(node)

一个节点是你集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能。和集群类似,一个节点也是有一个名字标识。

索引(index)

一个索引就是一个拥有几个相似特征的文档集合。索引由一个名字来标识(必须全部小写字母)。

类型(type)

在一个索引中你可以定义一种或多种类型。一个类型是你逻辑上的分类/分区。

文档(document)

一个文档是可被索引的基本信息单元,文档以JSON格式来表示。

分片和复制(shards & replicas)

一个索引可以存储超过单个节点硬件限制的大量数据。ElasticSearch提供了将索引划分成多份的能力
,这些份就叫做分片。当创建一个索引的时候,可以指定分片的数量。每个分片本身也是一个功能完善,并且独立的索引,这个索引可以被放置到集群中的任何节点上。

分片之所以重要,主要有以下两点:(1)允许水平分割/扩展内容容量(2)允许在分片之上进行分布式的并行的操作,进而提高性能、吞吐量。

在一个网络环境里失败随时可能发生,在某个分片或者节点不知道怎么就处于离线状态,或者任何原因消失了,这种情况下有一种故障转移机制是非常有用并且强烈推荐的。因此,EleasticSearch可以创建一份或者多份拷贝,这些拷贝叫做复制分片,或者直接叫复制。

复制之所以重要,主要有以下两点:

  1. 在分片/节点失败的情况下,提供了高可用性。因为这个原因,注意到复制分片从不与原始分片置于同一节点上是非常重要的
  2. 扩展了搜索量/吞吐量,因为搜索可以在所有的复制上并行。

ElasticSearch 常用curl

增加索引mapping新字段
1
curl -XPUT http://127.0.0.1:9201/job_index_v6/_mapping/b2b -d '{"properties":{"new_field_name":{"type":"string"}}}'
查看集群是否健康
1
curl 'localhost:9201/_cat/health?v'
列出所有索引
1
curl 'localhost:9201/_cat/indices?v'
获取集群的节点列表
1
curl 'localhost:9201/_cat/nodes?v'
删除索引
1
curl -X DELETE 127.0.0.1:9201/agent_job_index
给索引设置别名
1
curl -X PUT 127.0.0.1:9201/job_index_v6/_alias/job_index
查看指定索引的mapping
1
curl -XGET "http://127.0.0.1:9201/job_index_v6/_mapping?pretty"
清除指定索引 数据
1
curl -XPOST '127.0.0.1:9201/job_index_v6/job/_delete_by_query?refresh&slices=5&pretty' -H 'Content-Type: application/json' -d '{"query":{"match_all":{}}}'
根据查询删除
1
curl -XPOST '127.0.0.1:9201/job_index_v6/job/_delete_by_query?refresh&slices=5&pretty' -H 'Content-Type: application/json' -d '{"query":{"term":{"userId":"1017"}}}'
搜索
1
curl -X POST http://127.0.0.1:9200/job_index_v6/job/_search -d '{"query":{"term":{"indexStatus":"1"}}}' | python -m json.tool
1
curl -X POST http://127.0.0.1:9200/job_index_v6/job/_search -d '{"query":{"bool":{"filter":[{"match":{"is2CJob":{"query":true}}},{"match":{"isAgentJob":{"query":true}}},{"match":{"switchStatus":{"query":2}}}]}}}' | python -m json.tool
搜索最大值
1
curl -XPUT http://127.0.0.1:9200/job_index_v6/_settings -d '{ "index" : { "max_result_window" : 20000}}'
设置默认值
1
curl -POST 127.0.0.1:9201/job_index_v6/job/_update_by_query -d '{"script":{"lang":"painless","inline":"if (ctx._source.is2CJob == null) {ctx._source.is2CJob= 'true'}"}}'
添加一条数据
1
curl -XPOST 'localhost:9201/job_index_v6/job/22c3cade5f5a4f189f6145cb0b15b737?pretty' -d'{"id":"22c3cade5f5a4f189f6145cb0b15b737","sourceId":"22c3cade5f5a4f189f6145cb0b15b737","label":0,"userId":"8a1026775d16fbb2015d17a4771a0348","name":"1231231","operatorName":null,"refuseReason":null,"description":"2","workAddress":"韩国","countryId":[513114,513100,510000],"countryNames":["韩国"],"salary":3000,"salaryHigh":4000,"listPrice":2222,"channelPrice":0,"status":2,"indexStatus":2,"is2CJob":true,"deposit":500,"modifyTime":1546593027000,"createTime":1546593027000,"refreshTime":1546593027000,"companyId":"8a1026775981103b01598110cee70004","heat":0,"praise":0,"applyment":0,"comment":0,"browseNumber":0,"postName":["建筑","电工"],"post":[111200,110000,111220],"tagName":[],"tag":[],"systemTag":[],"allTag":[2215],"businessLine":237,"score":63393027,"newOldFlag":1,"switchStatus":0,"agentQuantity":0,"company.name":"北京走出趣科技发展有限公司","company.shortName":"走出趣","company.tag":[2215],"company.location":[110000,110100,110108],"company.status":1}'

查看 索引 设置

1
curl -XGET "http://zcq-product2:9200/job_index_v6/_settings?pretty"

查看ElasticSearch状态

1
curl 'localhost:9201' | python -m json.tool
按照排序搜索
1
curl -POST http://test2.51zouchuqu.com:9201/job_rcmd_score_index/score/_search -d '{"from":0,"size":1000,"query":{"bool":{"disable_coord":false,"adjust_pure_negative":true,"boost":1}},"explain":false,"sort":[{"score":{"order":"desc"}}]}'

ElasticSearch 备份、导入、导出

es 数据导入导出

1
2
npm install elasticdump
./bin/elasticdump
1
2
3
4
5
6
index->index:
elasticdump --input=http://localhost:9200/test --output=http://localhost:9200/test
index->file:
elasticdump --input=http://localhost:9200/test --output=./json.log
file->index:
elasticdump --input=./json.log --output=http://localhost:9200/test
iisheng wechat
微信扫码关注 Coder阿胜