Elastic Search 的安装、使用方式
1.Elastic Search
elasticsearch是一款非常强大的开源搜索引擎,支持的功能非常多。数据库模糊查询随着表数据量的增多,查询性能的下降会非常明显,而搜索引擎的性能则不会随着数据增多而下降太多。目前仅10万不到的数据量差距就如此明显,如果数据量达到百万、千万、甚至上亿级别,这个性能差距会非常夸张。数据库的模糊搜索功能单一,匹配条件非常苛刻,必须恰好包含用户搜索的关键字。而在搜索引擎中,用户输入出现个别错字,或者用拼音搜索、同义词搜索都能正确匹配到数据。
-  
Elasticsearch:用于数据存储、计算和搜索
 -  
Logstash/Beats:用于数据收集
 -  
Kibana:用于数据可视化
 
整套技术栈被称为ELK,经常用来做日志收集、系统监控和状态分析等等
2.es安装
在docker环境中拉取镜像,如果镜像拉取困难,我已经提供好了镜像tar包,可以直接下载
通过网盘分享的文件:kibana.tar等2个文件
链接: https://pan.baidu.com/s/15BwRa6wBfosRjeggmRzAvw?pwd=0218 提取码: 0218 
执行命令
# 加载es镜像
docker load -i es.tar
# 加载kibana镜像
docker load -i kibana 
创建容器
注意两个容器要处于同一个网络
# 创建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 net \ # 你的网络名称-p 9200:9200 \-p 9300:9300 \elasticsearch:7.12.1# 创建kibana容器
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=net \  # 你的网络名称
-p 5601:5601  \
kibana:7.12.1 
启动容器
docker start es
docker start kibana 
kibana是es的可视化插件,它会自动代理到es的端口
浏览器访问 宿主机的5601端口
点击 Explorer on my own

点击 Dev tools

进入操作界面即可进行使用

3.使用方式
elastic是一款分布式搜索引擎,通过倒排索引的方式,可以优化复杂的条件查询的效率。我是使用的docker环境进行的部署es,首先就是要拉取es的镜像,以及图形化界面kibana的镜像,然后进行构建。在项目中引入相关依赖,就可以进行使用了
创建索引:
PUT /products
{"settings": { "number_of_shards": 1, "number_of_replicas": 0 },"mappings": {"properties": {"title": { "type": "keyword" },"price": { "type": "double" },"description": { "type": "text" }}}
} 
查询与删除索引
-  
GET /_cat/indices?v查看所有索引。 -  
DELETE /products删除指定索引 
添加文档:
POST /products/_doc/1  (指定id)
{ "title": "iphone13", "price": 8999.99 } 
更新文档:
        全量替换(PUT)或局部更新(POST /_update)
POST /products/_doc/1/_update
{ "doc": { "title": "iPhone15" } } 
全文搜索(match)
        适用于 text 类型字段,支持分词,类似 SQL 的 LIKE 操作
GET /article/_search
{"query": { "match": { "title": "ES教程" } }
} 
        精确匹配(term)
        针对 keyword 或数值类型字段,不进行分词 
GET /order/_search
{"query": { "term": { "order_no": "20240315001" } }
} 
        范围查询(range)
        支持 gt(>)、gte(>=)、lt(<)、lte(<=)参数 
GET /order/_search
{"query": { "range": { "price": { "gte": 100, "lte": 500 } } }
} 
        布尔组合查询(bool)
        通过 must(AND)、should(OR)、must_not(NOT)组合条件 
GET /order/_search
{"query": {"bool": {"must": [ { "term": { "status": "paid" } }, { "range": { "price": { "gte": 100 } } } ]}}
} 
以上是es中几种简单的使用方式,同样es还支持更多更高级的用法,可详见
Elasticsearch:官方分布式搜索和分析引擎 | Elastic
