首页 > 其他分享 >elasticsearch初步使用学习

elasticsearch初步使用学习

时间:2024-05-10 10:33:18浏览次数:16  
标签:info 学习 index 初步 heima 文档 elasticsearch id es

通过使用elasticsearch,我们可以加快搜索时间(直接使用SQL的模糊查询搜索耗时会比较久,而且elasticsearch的响应耗时与数据量关系不大)

es主要用于存储,计算,搜索数据

依次部署elasticsearch,kibana

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 hm-net \
  -p 9200:9200 \
  -p 9300:9300 \
  elasticsearch:7.12.1
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=hm-net \
-p 5601:5601  \
kibana:7.12.1

参数说明9200为访问端口,9300为集群端口

  • 第一个环境表示es的最大最小内存,不能低于512
  • 第二个环境表示当前是单节点模式

 

倒排索引:

  文档document:每一条数据就是一个文档

  词条term:文档按语义分成的词语

  索引index:相同类的文档集中在一起

对文档内容分词,对词条建立索引,并记录词条所在文档的id

查询的时候根据词条查询文档id,再根据文档id查询文档

 

mySQL  es

table      index

row     document

column  field

schema  mapping   mapping是索引中文档的约束

SQL   DSL  DSL是es提供的json风格请求语句,实现CRUD

 

IK分词器:

smart智能切分,粗粒度

max_word最细切分,细粒度

POST /_analyze
{
  "analyzer": "ik_max_word",//  "ik_smart" 
  "text": "天津市长江大桥"
}

如何拓展IK分词器的词典

修改IKAnalyzer.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
        <comment>IK Analyzer 扩展配置</comment>
        <!--用户可以在这里配置自己的扩展字典 *** 添加扩展词典-->
        <entry key="ext_dict">ext.dic</entry>
</properties>

在config中新建一个ext.dic

市长
江大桥

 

mapping映射属性:

  type:字段数据类型,

    常见数据类型:

  • 字符串text(这个是可以分词的)keyword(这个是精确值,不可进行分词)
  • 数值:long,double,integer,float,byte,short
  • 布尔boolean
  • 日期date
  • 对象object

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

  analyzer:使用那种分词器(一般只有text需要指定这个)

  properties:(该字段的子字段,一般是给object用的)

 

索引库操作:对应SQL中的table操作

# 创建索引库样例
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"
          }
        }
      }
    }
  }
}
# 查询样例
GET /heima

# 删除样例
DELETE /heima

# 修改样例
PUT /heima/_mapping
{
  "properties":{
     "age":{
        "type": "byte"
      }
  }
}

 

文档操作:对应SQL中对column的操作

# 文档操作:新增
POST /heima/_doc/1
{
  "info": "黑马程序员Java讲师",
  "email": "[email protected]",
  "name": {
    "firstName": "云",
    "lastName": "赵"
  }
}

# 文档操作:查询
GET /heima/_doc/1

# 文档操作:删除
DELETE /heima/_doc/1

# 文档操作:修改 1.全量修改(先删除旧文档,再新增新文档)
PUT /heima/_doc/1
{
  "info": "黑马程序员Java讲师",
  "email": "[email protected]",
  "name": {
    "firstName": "子龙",
    "lastName": "赵"
  }
}

# 文档操作:修改 2.局部修改
POST /heima/_update/1
{
  "doc": {
    "info": "黑马程序员的Java讲师"
  }
}

 

批处理文档:注意这里不能格式化,必须写在一行上,不然就会报错而且操作失败

# 文档批处理 新增
POST /_bulk
{"index":{"_index":"heima","_id":"3"}}
{"info":"黑马程序员C++讲师","email":"[email protected]","name":{"firstName":"五","lastName":"王"}}
{"index":{"_index":"heima","_id":"4"}}
{"info":"黑马程序员前端讲师","email":"[email protected]","name":{"firstName":"三","lastName":"张"}}

# 文档批处理 删除
POST /_bulk
{"delete":{"_index":"heima","_id":"3"}}
{"delete":{"_index":"heima","_id":"4"}}

# 文档批处理 更新
POST /_bulk
{"update":{"_index":"heima","_id":"3"}}
{"doc":{"info":"黑马程序员C艹讲师"}}
{"update":{"_index":"heima","_id":"4"}}
{"doc":{"info":"黑马程序员非后端讲师"}}

 

标签:info,学习,index,初步,heima,文档,elasticsearch,id,es
From: https://www.cnblogs.com/kun1790051360/p/18181742

相关文章

  • QT学习
    1、在QT的.ui文件中如果想修改界面的实现函数:1)点击.ui进入界面                   2)右键“Send”按钮,点击跳转到“槽” 3)点击“OK”,跳转到点击Send按钮时,后端处理的函数 ......
  • 【专题】2022年中国企业数字化学习行业研究报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32263多变,不确定性,复杂,模糊不清的新业务图景,加快了公司人才发展模式的数字化转变;疫情冲击离线运输与公司现金流量,消费者支出减少,机构表现受压,数字化学习突破;行业数字化水平不断提高,商业体系和学习体系之间的关联性不断加强,企业学情图谱不断完善; 阅......
  • vue学习--模板语法(五、选项卡案例)
    案例:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><scriptsrc="https://cdn.j......
  • vue学习--模板语法(四、属性样式绑定&流程语句)
    目录3.5属性绑定1.Vue如何动态处理属性?2.v-model的底层实现原理分析3.6样式处理1.class样式处理2.style样式处理3.7分支循环结构1.分支结构2.v-if与v-show区别3.循环结构3.5属性绑定1.Vue如何动态处理属性?v-bind指令用法<av-bind:href='url'>跳转</a>缩写形式<a......
  • 学习python步骤
    参考链接:https://zhuanlan.zhihu.com/p/693208513一、Python基础学习Python语言基础的路线可以分为以下几个阶段:Python3入门:了解Python3的安装方法、如何运行Python程序以及交互模式的使用,同时学习注释的添加方法。数据类型:掌握Python中的各种数据类型,包括数字、布尔值、......
  • go学习笔记——gin框架
    gin是一款轻量级的goweb开发框架,官方文档https://gin-gonic.com/docs/examples/1.ginweb项目结构参考https://github.com/voyagegroup/gin-boilerplategin+protobufwire参考https://github.com/mohuishou/blog-code/tree/main/01-go-training/04-project/10-layou......
  • go学习笔记——Kratos框架
    官方文档https://go-kratos.dev/en/docs/getting-started/start/1.安装Go参考:mac安装go1.202.安装Kratos框架kratos依赖protobufgrpc等框架,需要先进行安装brewinstallgrpcbrewinstallprotobufbrewinstallprotoc-gen-gobrewinstallprotoc-gen-go-grpc验证......
  • Vue入门到关门之Vue3学习
    一、常用API注意:本文项目均使用脚手架为Vite1、setup函数(1)介绍如果在项目中使用配置项API,那么写起来就和vue2的写法是一样的;但是如果在项目中写的是组合式API,那么组件中所用到的:数据、方法等等,均要配置在setup中。此外,setup()钩子也是在组件中使用组合式API的入口,通常只在......
  • python学习----谁在说谎逻辑运算
    if__name__=='__main__':Li=[0,1]forainLi:forbinLi:forcinLi:zhang=(b==0)li=(c==0)wang=(a+b==0)if(zhang+li+wang==2anda+b+c=......
  • 01-Excel基础操作-学习笔记
    01选择性粘贴一般的复制粘贴,可以直接使用快捷键Ctrl+C复制,Ctrl+V粘贴。但是在工作场景中,这样简单的复制粘贴远远不能满足需要。因此,学习了这个选择性粘贴工具。选择性粘贴工具在哪里?选中单元格区域——复制——鼠标右击——选择性粘贴应用场景一:要求保留原有格式,不......