山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十九)- 微服务(9)

目录

[12. ElastisSearch](#12. ElastisSearch)

[12.1 安装es](#12.1 安装es)

[12.2 部署kibana](#12.2 部署kibana)

[12.2.1 部署](#12.2.1 部署)

[12.2. 2 DevTools](#12.2. 2 DevTools)

[12.3 索引库操作](#12.3 索引库操作)

[12.3.1 mapping映射](#12.3.1 mapping映射)

[12.3.2 创建索引库](#12.3.2 创建索引库)

[12.3.3 查询索引库](#12.3.3 查询索引库)

[12.3.4 删除索引库](#12.3.4 删除索引库)

[12.3.5 修改索引库](#12.3.5 修改索引库)

[12.4 文档操作](#12.4 文档操作)

[12.4.1 新增文档](#12.4.1 新增文档)

[12.4.2 查询文档](#12.4.2 查询文档)

[12.4.3 删除文档](#12.4.3 删除文档)

[12.4.4 修改文档](#12.4.4 修改文档)


12. ElastisSearch

12.1 安装es

运行docker命令,部署单点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

命令解释:

  • -e "cluster.name=es-docker-cluster":设置集群名称

  • -e "http.host=0.0.0.0":监听的地址,可以外网访问

  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小

  • -e "discovery.type=single-node":非集群模式

  • -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录

  • -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录

  • -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录

  • --privileged:授予逻辑卷访问权

  • --network es-net :加入一个名为es-net的网络中

  • -p 9200:9200:端口映射配置

在浏览器中输入:http://192.168.150.101:9200 即可看到elasticsearch的响应结果:

12.2 部署kibana

kibana可以给我们提供一个elasticsearch的可视化界面,便于我们学习。

12.2.1 部署

运行docker命令,部署kibana

复制代码
  
  docker run -d \
  --name kibana \
  -e ELASTICSEARCH_HOSTS=http://es:9200 \
  --network=es-net \
  -p 5601:5601  \
  kibana:7.12.1
  • --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中

  • -e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch

  • -p 5601:5601:端口映射配置

kibana启动一般比较慢,需要多等待一会,可以通过命令:

复制代码
  
  docker logs -f kibana

查看运行日志,当查看到下面的日志,说明成功:

此时,在浏览器输入地址访问:http://192.168.150.101:5601,即可看到结果

12.2. 2 DevTools

kibana中提供了一个DevTools界面:

这个界面中可以编写DSL来操作elasticsearch。并且对DSL语句有自动补全功能。

12.3 索引库操作

12.3.1 mapping映射

mapping是对索引库中文档的约束

常见的mapping属性:

type : 字段数据索引,常见的类型:

  1. 字符串 text(可分词的文本) keyword(精确值 比如: 国家 品牌 ip地址)

  2. 数值 : long integer short byte double float布尔 boolean日期: date对象: object

index : 是否创建索引 默认为true

analyzer : 使用哪种分词器

properties: 某个字段的子字段

12.3.2 创建索引库
复制代码
  
  # 创建索引库
  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"
            }
          }
        }
        
      }
    }
  }
12.3.3 查询索引库
复制代码
  
  GET /heima
12.3.4 删除索引库
复制代码
  
  DELETE /heima
12.3.5 修改索引库

索引库不允许需改,只能添加

复制代码
  
  # 添加新字段
  PUT /heima/_mapping
  {
    "properties": {
      "age": {
        "type": "integer"
      }
    }
  }

12.4 文档操作

12.4.1 新增文档
复制代码
  
  POST /索引库名/_doc/文档id
  {
      "字段1": "值1",
      "字段二": "值二",
      "字段三": {
          "子属性1": "值3",
          "子属性2": "值4"
      }
  }

例:

复制代码
  
  POST /heima/_doc/1
  {
    "info": "黑马程序员",
    "email": "incast@.cn",
    "name": {
      "firstName": "云",
      "lastName": "赵"
    }
  }
12.4.2 查询文档
复制代码
  
  GET /heima/_doc/1
12.4.3 删除文档
复制代码
  
  DELETE /heima/_doc/1
12.4.4 修改文档
  1. 全量修改 会删除旧文档, 添加新文档(既能修改又能新增,id存在就修改,不存在就新增)
复制代码
  
  PUT /heima/_doc/1
  {
    "info": "黑马程序员",
    "email": "incast@.cn",
    "name": {
      "firstName": "云",
      "lastName": "赵"
    }
  }
  1. 增量修改,修改指定字段值
复制代码
  
  POST /索引库名/_update/文档id
  {
      "doc": {
          "字段名": "新的值"
      }
  }

例:

复制代码
  
  POST /heima/_update/1
  {
      "doc": 
          "email": "123456789@qq.com"
      }
  }
相关推荐
码蜂窝编程官方8 分钟前
【含开题报告+文档+PPT+源码】基于SpringBoot+Vue的虎鲸旅游攻略网的设计与实现
java·vue.js·spring boot·后端·spring·旅游
猿java41 分钟前
什么是 Hystrix?它的工作原理是什么?
java·微服务·面试
牙牙7053 小时前
Centos7安装Jenkins脚本一键部署
java·servlet·jenkins
灼烧的疯狂4 小时前
K8S + Jenkins 做CICD
容器·kubernetes·jenkins
java1234_小锋4 小时前
Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?
大数据·elasticsearch·jenkins
我的运维人生4 小时前
Elasticsearch实战应用:构建高效搜索与分析平台
大数据·elasticsearch·jenkins·运维开发·技术共享
运维老司机4 小时前
Jenkins修改LOGO
运维·自动化·jenkins
bug管理者6 小时前
UI自动化测试中公认最佳的设计模式-POM
jenkins·策略模式
天天扭码7 小时前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
凡人的AI工具箱7 小时前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang