赞
踩
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎,Elasticsearch和Mysql,Redis,MongoDb,Clickhouse等一样,都可以认为它是一种数据库
设想一个场景:
user表有6千多万条数据,我想查询nick中包含”大帅哥“的数据:
Select nick from user where nick like '%大帅哥%'
比如,我把大帅哥写成了帅哥,写成了大帅锅,写成了dashuaige,甚至写成了dsg,大帥哥等,此时的 Mysql是无法处理
的,而Elasticsearch借助分词器(后续介绍),可以简单快速查询检索。
1、 MySQL 的数据库(DataBase)相当于 Index(索引),数据的逻辑集合,ES 的工作主要也是创建索引,查询索引。
2、 一个数据库里会有多个表(Table),同样的一个 Index 也会有多个 type。
3、 一个表会有多行(Row),同样的一个 Type 也会有多个 Document。
4、 Schema 指定表名,表字段,是否建立索引等,同样的 Mapping 也指定了 Type 字段的处理规则,即索引如何建立,是否分词,分词规则等。
5、MySQL 中一个row对应多个Column,同样的一个Document会有多个Fields。
6、 在 MySQL 中索引是需要手动创建的,而在 ES 一切字段皆可被索引,只要在 Mapping 在指定即可。
总结:
Mysql关系型数据库,适用于结构化数据(数据与数据之间存在强关联)的数据存储和查询和数据与数据之间的关系处理,大量数据检索需要全表查询,性能差
Elasticsearch非关系型数据库,适用于数据与数据之间相对独立的大量数据的检索查询,数据修改效率低于Mysql,不善于处理数据之间的关系
通过Docker,使用es和kibana镜像,开启es服务和kibana(后续介绍)。
我们使用的版本号是:5.6.12
使用Kibana Dev Tool(后续介绍)操作:
Setting
:es通过settings设置索引的基础参数,包括分词器、分片等。
PUT /baobaokanjia/ { "settings": { "number_of_shards": 1, "analysis": { "analyzer": { "ik_max_word_t2s": { "char_filter": [ "tsconvert" ], "tokenizer": "standard" }, "ik_smart_t2s": { "char_filter": [ "tsconvert" ], "tokenizer": "standard" }, "pinyin_analyzer": { "tokenizer": "my_pinyin" } }, "char_filter": {
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。