01_基础

0.前言

0.1.es的框架

对es进行的一层封装https://ci.bbossgroups.com/#/README?id=elasticsearch-demo
更便于操作,例如数据库记录更新,es同步更新

0.2.es和mysql数据同步

https://blog.csdn.net/RuiKe1400360107/article/details/104270421

image.png

1.初始ElasticSearch

1.0.引入

图片.png
图片.png
  • 搜索服务器,服务器就是一个软件,能够对外提供服务。
  • 搜索引擎网站
  • 几乎所有的应用程序中都会提供搜索相关的功能,比如电商网站搜索商品,音乐网站搜索歌曲
  • 搜索和查询是一回事,但是又不一样
  • 查询是select * from xxx 这个是针对于关系型数据库的查询方式
  • es做搜索和关系型数据库做查询有啥不一样?
  • 搜索引擎网站、电商网站搜索、音乐网站搜索是否是用关系型数据库做查询呢?不是。为啥不用关系型数据库做查询呢

1.1.数据库查询存在的问题

1.1.1.问题1
图片.png
  • 模糊查询左边加%,title这一列上的索引将失效。索引失效意味着查询会一条一条比对,性能低。
1.1.2.问题2
图片.png
  • 搜索既想包含华为又想包含手机的信息,华为或者手机有一个词包含就要信息
  • %华为手机%这种搜索不能满足条件

1.2.倒排索引

图片.png

关系型数据库查询存在的两个问题通过倒排索引来解决
图片.png

大脑存储数据都是正向索引。所以第一个问题很难回答,但是第二个问题就很简单
图片.png
  • 文本怎么拆分,单独的一个字或者相邻的两个字、三个字...能组成词的
  • value存储的是文本内容,会越来越庞大,所以需要做简单的优化。value放诗的唯一标识比如诗名。通过唯一标识去找诗的内容就很快
    图片.png
    图片.png

1.3.ElasticSearch数据的存储和搜索原理

image.png
image.png

1.3.1.存储

image.png

分词,过程不用管,自动完成
image.png
image.png
image.png

1.3.2.搜索

image.png
  • 搜索手机关键字,查词条,匹配之后找value,再去把数据找出来。即使数据库有1亿条记录,词条可没有这么多记录。

1.4.ElasticSearch概念

image.png
  • Lucene是一套搜索api,基于Lucene写代码也是可以的,但是非常麻烦,需要对搜索的各个细节了如指掌。比如分词,es帮你自动完成,Lucene需要自己写代码分词。es相当于是对Lucene的封装。
  • Lucene有两个实现,一个solr,一个是es,solr是先出来的产品,es是后出来的产品,es性能高一点,特别是做实时搜索(一边存储数据,一边搜索)。
  • 海量数据查询,一般用于互联网项目,数据量大,因为引入es还是比较复杂的,传统项目如果数据量不大不建议使用。
  • es和mysql区别
    image.png

2.安装ElasticSearch

2.1.es安装

  • 上传到linux put f:/elasticsearch-7.4.0-linux-x86_64.tar.gz
  • 解压 tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz -C /opt
  • es解压后的目录包含jdk
  • 修改配置vim /opt/elasticsearch-7.4.0/config/elasticsearch.yml
  • shift+g切换到最后
    image.png
  • 卸载linux已经安装的jdk,卸载完后重启服务器
  • 在bin目录下,执行./elasticsearch(出了两个错误)
  • OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.解决vim jvm.options,-XX:+UseConcMarkSweepGC 改为 -XX:+UseG1GC
  • os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Not enough space' 解决vim jvm.options -Xms512m -Xmx512m最低要求
  • 该错误是正常的,can not run elasticsearch as root
    image.png

    useradd lines

  • 授权
    image.png
  • 为新用户设置相关信息
    image.png
  • 启动
    image.png
  • 访问
    image.png

    云服务器需要开放端口
    image.png
    image.png

2.2.Kibana安装(官方提供的客户端操作工具)

image.png
image.png
  • 上传put f:/kibana-7.4.0-linux-x86_64.tar.gz
  • 解压tar -zxvf kibana-7.4.0-linux-x86_64.tar.gz -C /opt(由于日志信息很多,可能会报内存溢出异常)
  • 配置vim /opt/kibana-7.4.0-linux-x86_64/config/kibana.yml
    image.png

    此处es和kibana在一台机器上,所以elasticsearch.hosts: ["http://127.0.0.1:9200"]的ip是127.0.0.1

  • 启动 直接启动报错
    image.png

    ./kibana --allow-root

  • 修改内存(可以不修改)
    image.png
  • 同时运行es和kibana需要2g内存
  • 云服务器开放端口
  • 访问http://****:5601
    image.png

3.ElasticSearch核心概念

image.png
image.png

4.操作ElasticSearch(脚本操作,运维人员使用)

4.1.RESTful风格介绍

image.png

4.2.基于postman操作

4.3.基于kibana操作

4.4.操作索引(基于postman)

image.png
image.png
4.4.1.添加索引
image.png
image.png
4.4.2.查询索引
image.png
  • 一次性查两个:http://ip:9200/goods_index,goods_index2
  • 一次性查所有http://ip:9200/_all(包含很多自带的索引)
4.4.3.删除索引
image.png

删除后再查
image.png
4.4.4.关闭索引

不想删,也不想别人访问
image.png

查还是可以查到,但是不能往里面添加数据了
image.png
4.4.5.打开索引
image.png
4.4.6.小结
image.png

4.5.操作映射(基于kibana)

4.5.1.es支持的数据类型
  • 简单数据类型
    image.png
    image.png
    image.png
  • 复杂数据类型
    image.png
4.5.2.添加映射
image.png
image.png
image.png
4.5.3.查询映射
image.png
4.5.4.添加字段
image.png
4.5.5.小结
image.png

4.6.操作文档

4.6.1.增删改查
image.png
4.6.2.总结
image.png

4.7.分词器

4.7.1.介绍
image.png

重点关注一句话,es内置分词器对中文很不友好。
image.png
image.png

需要安装中文分词器ik分词器

4.7.2.IK分词器安装
image.png
image.png
  • put f:/apache-maven-3.1.1-bin.tar.gz
  • tar zxvf apache-maven-3.1.1-bin.tar.gz -C /opt
  • ln -s apache-maven-3.1.1 maven(opt目录设置一个软链接)
  • 配置maven
    image.png
  • put f:/elasticsearch-analysis-ik-7.4.0.zip
  • cp elasticsearch-analysis-ik-7.4.0.zip /opt
  • unzip elasticsearch-analysis-ik-7.4.0.zip(报错-bash: unzip: command not found
    )
  • yum install zip
  • yum install unzip
  • 解压完成后,查看目录,经典的maven结构
    image.png
  • 先打包,获取jar(打包过程中出现插件下载不了Plugin org.apache.maven.plugins:maven-enforcer-plugin:1.2 or one of its dependencies could not be re,更换阿里云的国内镜像。)
  • 移动jar
    image.png
4.7.3.IK分词器使用
image.png

4.8.查询文档

image.png
4.8.1.词条查询
  • 词条查询,title文本是华为3G手机,分词的词条可能是华为、3G、手机,搜索条件是华为手机,词条没有这四个字,查不出来,词条需要和搜索条件完全匹配
    image.png
  • 删除索引,重新建索引、建映射、新增文档
    image.png
  • 创建完索引,可以不添加索引对应的映射,直接添加文档,会动态生成映射
  • 再次查询,输入北京可以查到两条,输入北京昌平,词条没有这四个字所以查不到
    image.png
4.8.2.全文查询
  • 全文查询,title文本是华为3G手机,分词的词条可能是华为、3G、手机,然后对搜索条件华为手机进行分词,求并集
  • 输入北京昌平可以查询到记录
    image.png
  • 输入华为手机也可以查到到记录
    image.png
4.8.3.总结
image.png

创建索引的时候,某个字段是text,需要指定分词器,不指定就是默认的standard

5.ElasticSearch JavaAPI

5.1.SpringBoot整合es

image.png
  • 不需要引入web坐标
  • es没有start启动器支持,用spring也是引入这些坐标


    image.png
    image.png
    image.png
    image.png

5.2.操作索引

5.2.1添加索引
  • 方式一:只添加索引
    image.png
  • 方式二:添加索引和映射
    image.png

    注意同名的类要选择org.elasticsearch.client包下的

5.2.2查询索引
5.2.3删除索引
5.2.4判断索引是否存在
1621213339(1).jpg

5.3.操作文档(java代码一般操作文档)

5.3.1.添加文档
图片.png
5.3.2.修改文档
5.3.3.根据id查询文档
5.3.4.删除文档
图片.png

你可能感兴趣的:(01_基础)