初识elasticsearch

1. 环境搭建

1.1 docker镜像

  • 操作系统:MacOS(M3)
  • 镜像:
bash 复制代码
$ docker images
REPOSITORY          TAG                IMAGE ID       CREATED         SIZE
elasticsearch       7.17.18            a999bbbb3b45   2 days ago      624MB
kibana              7.17.18            8c3cf1cb48a1   2 days ago      930MB
  • 运行:
bash 复制代码
$ docker network create es-net

#$ 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.17.26

$ docker run -d --name es -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" -v /Users/bytedance/Documents/es/data:/usr/share/elasticsearch/data -v /Users/bytedance/Documents/es/plugins:/usr/share/elasticsearch/plugins --privileged --network es-net -p 9200:9200 -p 9300:9300 elasticsearch:7.17.18

$ docker run -d --name kibana -e ELASTICSEARCH_HOSTS=http://es:9200 --network=es-net -p 5601:5601 kibana:7.17.18
  • 使用Dev Tools

1.2 分词器

ES在创建倒排索引时需要对文档分词;在搜索时,需要对用户输入内容分词。但默认的分词规则对中文处理并不友好。

我们在kibana的DevTools中测试:

IK分词器

安装文档路径:https://github.com/infinilabs/analysis-ik/releases,版本 7.17.18

参考:https://www.cnblogs.com/ciel717/p/17657137.html

分词器的作用
  • 创建倒排索引时对文档分词
  • 用户搜索时,对输入的内容分词
IK分词器的几种模式
  • ik_smart:智能切分,粗粒度
  • ik_max_word:最细切分,细粒度
IK分词器 - 扩展词库

要扩展ik分词器的词库,只需要修改一个ik分词器目录中的config目录中的ikAnalyzer.cfg.xml文件:

然后再名为ext.dic的文件中,添加想要扩展的词语即可。


2.索引库操作

2.1 mapping属性

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-params.html

mapping是对索引库中文档的约束,常见的mapping属性包括:

  • type:字段数据类型,常见的简单类型有:
    • 字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)
    • 数值:long、integer、short、byte、double、float
    • 布尔:boolean
    • 日期:date
    • 对象:object
  • index:是否创建索引,默认为true
  • analyzer:使用哪种分词器
  • properties:该字段的子字段

2.2 创建索引库

ES中通过RESTful请求操作索引库、文档。请求内容用DSL语句来表示。创建索引库和mapping的DSL语句如下:

小练习:

bash 复制代码
# 创建索引库
PUT /heima
{
  "mappings": {
    "properties": {
      "info": {
        "type": "text",
        "analyzer": "ik_smart"
      },
      "email":{
        "type": "keyword",
        "index": false
      },
      "name": {
        "type": "object",
        "properties": {
          "firstName":{
            "type": "keyword"
          },
          "lastName":{
            "type": "keyword"
          }
        }
      }
    }
  }
}

效果图:

2.3 查询、删除 索引库

2.4 修改 索引库(添加字段)

索引库和mapping一旦创建无法修改,但是可以添加新的字段,语法如下:

2.5 总结

  • 创建索引库:PUT /索引库名
  • 查询索引库:GET /索引库名
  • 删除索引库:DELETE /索引库名
  • 添加字段:PUT /索引库名/_mapping

3. 文档操作

3.1 添加文档

新增文档的DSL语法如下:

3.2 查看、删除文档

3.3 修改文档


4. RestClient操作ES

ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client/index.html

相关推荐
万岳软件开发小城5 分钟前
教育APP/小程序开发标准版图:课程、题库、直播、学习一站式梳理
大数据·php·uniapp·在线教育系统源码·教育app开发·教育软件开发
STLearner2 小时前
AI论文速读 | U-Cast:学习高维时间序列预测的层次结构
大数据·论文阅读·人工智能·深度学习·学习·机器学习·数据挖掘
数字化顾问2 小时前
(65页PPT)大型集团物料主数据管理系统建设规划方案(附下载方式)
大数据·运维·人工智能
老蒋新思维3 小时前
创客匠人 2025 全球创始人 IP+AI 万人高峰论坛:AI 赋能下知识变现与 IP 变现的实践沉淀与行业启示
大数据·人工智能·网络协议·tcp/ip·重构·创始人ip·创客匠人
河南博为智能科技有限公司3 小时前
高集成度国产八串口联网服务器:工业级多设备联网解决方案
大数据·运维·服务器·数据库·人工智能·物联网
无代码专家5 小时前
设备巡检数字化解决方案:构建高效闭环管理体系
java·大数据·人工智能
天远数科5 小时前
Node.js 原生加密指南:详解 Crypto 模块对接天远银行卡黑名单接口
大数据·api
expect7g5 小时前
Paimon Branch --- 流批一体化之二
大数据·后端·flink
天远云服6 小时前
高并发风控实践:AES 加密与银行卡风险标签清洗的 Go 语言实现
大数据·api
无级程序员6 小时前
datasophon中dolpinscheduler的自定义配置common.properties不生效问题解决
大数据