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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值