赞
踩
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful接口。它可以近乎实时的存储、检索数据;本身扩展性非常好,一个ES节点就可以认为是一个集群(默认支持集群),它可以扩展到上百台服务器。ES的生产环境至少在8GB以上
MySQL | Elastic Search |
---|---|
Database | Index |
Table | Type |
Row | Document |
Column | Field |
Schema | Mapping |
Index | Everything is indexed |
SQL | Query DSL |
SELECT* FORM table… | GET http://… |
UPDATE table SET… | PUT http://… |
CREATE INDEX 索引名称 ON 表明(字段名)
B+树就是一个排序算法将一组数据排好了顺序,每个父结点右边顺序等于或高于于父结点的顺序,左边都等于或低于父结点的顺序;查找时由父结点开始一层层向子结点比较。效率比一个个比较子结点效率要高的多
在对比如数字这样能够轻易排序的类型使用正向索引,创建对应的B+树,在查找时就可以很快的找到对应的列
对于全文检索,检索字符串中的某一段字符时,就只能进行模糊查询,索引就失效了。而倒排索引会先对字段进行分词,然后每个分词对应一组document的唯一标识,所有单词存储在一个B+树实现的单词字典中(字典中还存有单词和倒排列表之间的联系,倒排列表包含document的标识);查询时会将查询的内容进行分词,然后通过b+树查询找到对应分词就可以找到对应的ducument,这比mysql模糊查询的全盘查找快得多
docker search -f stars=100 elasticsearch
docker pull elasticsearch:7.0.0
docker images
检查是否拉取成功docker run --name=my_es -d -p9200:9200 -e "discovery.type=single-node" docker.io/elasticsearch:7.0.0
firewall-cmd --zone=public --add-port=9200/tcp --permanent
、firewall-cmd --reload
kibana是为ES设计的开源分析和可视化平台,可以使用kibana来搜索,查看存储在ES索引中的数据并与之交互
kibana的安装过程和es相同,启动是配置环境变量:docker run --name=kibana -e ELASTICSEARCH_HOSTS=es的地址与端口 -e SERVER_PORT=5601 -e SERVER_HOST=0.0.0.0 -p 5601:5601 -d kibana
/_cat/allocation
:查看单节点的shard分配整体情况/_cat/shards
:查看各shard的详细情况/_cat/shards/{index}
:查看指定分片的详细情况/_cat/master
:查看master节点的信息/_cat/nodes
:查看所有节点的信息/_cat/indices
:查看集群中所有index的详细信息/_cat/indices/{index}
:查看集群中指定index的详细信息/_cat/segments
:查看各index的segment的详细信息,包括segment名,所属shard,内存(磁盘)占用大小,是否刷盘/_cat/segments/{index}
:查看指定index的segment的详细信息,包括segment名,所属shard,内存(磁盘)占用大小,是否刷盘/_cat/count
:查看当前集群的document数量/_cat/count/{index}
:查看指定索引的document数量/_cat/recovery
:查看集群内每个shard的recovery的过程,调整replica/_cat/recovery/{index}
:查看指定索引shard的recovery过程/_cart/health/
:查看集群当前健康状态,红、黄、绿/_cat/pending_tasks/
:查看当前集群的pending task(等待任务)/_cat/aliases/
:查看集群中所有索引的alias(别名)信息/_cat/aliases/{alias}
:查看指定索引的alias信息/_cat/thread_pool
:查看集群各节点内部不同类型的threadpool的统计信息/_cat/plugins
:查看集群各个节点的插件信息/_cat/fielddata
:查看集群各个节点的fielddata内存使用情况/_cat/fielddata/{fields}
:查看指定field的内存使用情况,里面传field属性对应的值/_cat/nodeattrs
:查看单节点的自定义属性/_cat/repositores
:输出集群中注册快照存储库/_cat/templates
:输出当前正在存在的模板信息PUT 索引名/类型名(统一使用_doc)/id
{
json对
}
PUT 索引名/create/id
{
json对
}
POST 索引名/create (不指定id自动生成)
{
json对
}
两种操作的区别
GET /_search{}
:空查询,将返回所有索引库中所有文档信息GET 索引名/_doc/_search
:查询索引下的全部文档GET 索引名/_doc/id
:通过id查询文档GET 索引名
:查看索引信息GET 索引名/_doc/_search?q=key:value
:简单条件查询GET 索引名/_search { "_source":["字段1","字段2"], "query":{ "match_all":{ } }, "from":0, "size":2, "sort":{ "字段":{ "order":"asc/desc" } } }
ES的更新数据可以添加新的字段,这是mysql所不能的
PUT 索引名/_doc/id
{
json对
}
删除原有的文档并创建新的文档,版本增加
2. POST更新
PUT 索引名/_doc/id
{
json对
}
在原有的文档上更新字段,版本增加
DELETE 索引名
:删除索引DELETE 索引名/_doc/id
:通过id删除文档ES的Mapping,定义了索引的结构,类似于关系型树库的schema。ES的Setting中定义分片和副本数以及搜索的最关键组件,即Analyzer分词器。
Mapping主要包含以下内容:
1. 定义索引中字段的名称
2. 定义字段的数据类型
3. 可对字段设置倒排索引的相关配置,如是否需要分词,使用什么分词器
从7.x开始,一个Mapping只属于一个索引的type,默认为_doc
每个文档属于一个type
一个type只有一个Mapping定义
从7.x开始,不需要在Mapping中指定type信息,默认type为_doc
Mapping中的字段类型会自动识别,如果输入的JSON是字符串而且格式为日期格式,ES会自动设置成Date类型;当输入的字符串是数字的时候,ES默认也会当成字符串来处理。
如果想要指定字段类型,需要在创建索引时对某个字段的类型进行指定,这样新增的该字段数据就是该类型的;对于已经存在的字段,是不支持修改的,如果希望更改已存在的字段的类型,必须重建索引
指定类型
PUT 索引名
{
"mappings": {
"properties": {
"字段名":{
"type":"类型"
}
}
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。