ElasticSearch
分布式搜索技术
倒排索引
ElasticSearch采用倒排索引
1、文档(document): 每条数据就是一个文档
2、词条(term) : 文档按照语义分成的词语。不可重复
MySQL擅长事务类型操作,可以确保数据的安全和一致性。
ElasticSearch擅长海量数据的搜索、分析、计算。
单机安装
docker network create es-net 创建网络
安装es
docker run -d \ --name es \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ -e "discovery.type=single-node" \ -v es-data:/usr/share/elasticsearch/data \ -v es-plugins:/usr/share/elasticsearch/plugins \ --privileged \ --network es-net \ -p 9200:9200 \ -p 9300:9300 \ elasticsearch:7.12.1
安装kibana
docker run -d --name kibana -e ELASTICSEARCH_HOSTS=http://es:9200 --network=es-net -p 5601:5601 kibana:7.12.1 安装kibana,版本必须和es对应
分词
es中对中文的分词支持比较差。IK分词器。
github下载zip压缩包版本7.12.1,解压文件夹上传到es挂载的插件目录。
docker volume inspect es-plugins 查看es插件数据卷挂载路径
两种分词器:ik_smart 最少切分 ik_max_word 最细切分。
分词器扩展
索引库操作(对应MySQL表操作)
mapping映射属性 对文档的约束
文档在es中是json格式。
es中没有数组的,但是可以允许一个字段有多个值。如下的score应该是double、float类型。
analyzer和text结合使用,只有text需要分词。
创建索引库(MySQL建表)
查、删、改索引库
修改索引库会导致倒排索引失效,禁止去修改索引库。但是可以添加字段
文档操作
增、查、删 (MySQL的CRUD)
修改文档
方式一把新增的post改成了put
DSL查询分类与基本语法
查询
精确查询是Term-level queries
查询城市在上海,品牌为皇冠假日或者华美达任意一个,价格不小于等于500,用户评价分大于45分。
排序
分页
高亮
数据聚合
自动补全
数据同步
集群
本文来自博客园,作者:长寿奉孝,转载请注明原文链接:https://www.cnblogs.com/tyt0o0/p/18142846