ElasticSearch基操及常用命令

cluster

     代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

 

shards

     代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

 

replicas

     代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

 

recovery

     代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

 

river

     代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的,river这个功能将会在后面的文件中重点说到。

 

gateway

     代表es索引的持久化存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到硬盘。当这个es集群关闭再重新启动时就会从gateway中读取索引数据。es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。

 

discovery.zen

     代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。

 

Transport

     代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。

基本命令:

监控和查看集群状态

查看集群的健康状态

http://127.0.0.1:9200/_cat/health?v

 

查看集群的索引数

http://127.0.0.1:9200/_cat/indices?v

 

查看集群所在磁盘的分配状况

http://127.0.0.1:9200/_cat/allocation?v

 

查看集群的节点

http://127.0.0.1:9200/_cat/nodes?v

 

查看集群的其它信息

http://127.0.0.1:9200/_cat/

创建索引

Method:PUT http://192.168.237.130:9200/people { "settings":{ "number_of_shards": 3, "number_of_replicas": 1 }, "mappings":{ "man":{ "properties":{ "name": { "type":"text" }, "country": { "type":"keyword" }, "age":{ "type":"integer" }, "date":{ "type":"date", "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } } } } }

http://192.168.237.130:9200/people/man/1 { "name":"wei", "country":"china", "age":28, "data":"1293-12-33" }

自动ID插入

Method:POST http://192.168.237.130:9200/people/man/ { "name":"wei2", "country":"china", "age":23, "data":"1293-12-23" }

 

修改文档

直接修改文档

Method:POST http://192.168.237.130:9200/people/man/1/_update { "doc":{ "name":"who am I" } }

通过脚本修改文档

{ "script":{ "lang":"painless", "inline": "ctx._source.age = params.age", "params": { "age":100 } } }

删除文档

Method:DELETE http://192.168.237.130:9200/people/man/1

 

删除索引

Method:DELETE http://192.168.237.130:9200/people

 

查询

简单查询

Method:GET http://192.168.237.130:9200/book/novel/1

 

条件查询

Method http://192.168.237.130:9200/book/_search

查询全部

{ "query":{ "match_all":{} }, "from":1, "size":1 }

 

from 表示从结果中的第几条开始取数据,size表示取多少条

根据条件查询

{ "query":{ "match":{ "title":"ES" } }, "sort":[ { "publish_date":{"order":"desc"}} ] }

 

聚合查询

{ "aggs":{ "group_by_word_count":{ "terms":{ "field":"word_count" } }, "group_by_publish_date":{ "terms":{ "field":"publish_date" } } } }

子条件查询:Query Context

在查询过程中,除了判断文档是否满足查询条件,ES还会计算一个_score来标志匹配的程度,旨在判断目标文档和查询条件匹配有多好

  • 全文本查询:针对文本类型数据

模糊匹配

{ "query":{ "match":{ "author":"李四" } } }

 

完全匹配

{ "query":{ "match_phrase":{ "author":"李四" } } }

多个字段匹配查询

{ "query":{ "multi_match":{ "query":"李四", "fields":["author","title"] } } }

 

query_string 查询

{ "query":{ "query_string":{ "query":"李四 AND ES" } } }

 

  • 字段级别查询:针对结构化数据,如数字,日期等

字段查询

{ "query":{ "term":{ "word_count":1000 } } }

 

范围查询

{ "query":{ "range":{ "word_count":{ "gte":1000, "lte":2000 } } } }

子条件查询:Filter Context

在查询过程中,只判断该文件是否满足条件,只有Yes或者No

{ "query":{ "bool":{ "filter":{ "term":{ "word_count":1000 } } } } }

符合条件查询

固定分数查询

{ "query":{ "constant_score":{ "filter":{ "match":{ "title":"ES" } }, "boost":2 } } }

布尔查询

should是或逻辑,must是与逻辑 "query":{ "bool":{ "should":[ { "match":{ "author":"李四" } }, { "match":{ "title":"ES" } } ] } } }

手动段合并

POST /indexName/_optimize?max_num_segments=1

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值