ElasticSearch_基础

ElasticSearch基础

1.基础

  • 开箱即用,解压即可
  • 在bin目录下启动ElasticSearch
  • 访问localhost:9200 可以看到下面的内容
  • image-20201029143304387

2. 安装与使用可视化插件

  • head插件,依赖于Node.Js

  • 安装ElasticSearch-head,在解压的目录下运行 cmd,输入 cnpm install 等待安装完毕

  • 安装完毕后,使用命令 npm run start 启动

  • 由于我们的插件的端口为 9100,与ElasticSearch不同,产生了跨域的问题,要在ElasticSearch的配置文件中配置跨域

  • 配置跨域

    • 在ElasticSearch文件夹下的/conf/elasticsearch.yaml中配置

    • http.cors.enabled: true
      http.cors.allow-origin: "*"
      
    • 重启ElasticSearch

  • 正常启动如下

  • image-20201029153917033

3. 安装Kibana

  • Kibana 版本要和 ES 一致

  • 解压完毕,启动测试

  • 在 /bin 目录下的kibana.bat文件

  • 默认端口为localhost:5601

  • 访问kibana

  • image-20201029160653069

  • 国际化(汉化)

    • 在kibana目录下的 \x-pack\plugins\translations\translations 可以看到

    • image-20201029161128980

    • 我们在 /conf 目录下的的kibana.yml中配置

    • i18n.locale: "zh-CN"
      
    • 重启kibana即可!

4. ES的核心概念

  • ES是面向文档的,一切都是 JSON (文档就是我们的数据)

  • elasticsearch在后台把每个索引划分成多个分片,每分分片可以在集群中的不同服务器间迁移

    • 单个节点由于物理机硬件限制,存储的文档是有限的,如果一个索引包含海量文档,则不能在单个节点存储。ES提供分片机制,同一个索引可以存储在不同分片(数据容器)中,这些分片又可以存储在集群中不同节点上
  • 一个人就是一个集群,默认的集群名称就是 ElasticSearch

  • ElasticSearch是面向文档的,索引和搜索数据的最小单位是文档,文档有几个重要属性

    • 自我包含: 一篇文档同时包含字段和对应的值,即同时包含 key : value
    • 可以使层次型的: 一个文档中包含文档,可以用来构建复杂的逻辑实体! ==> (就是一个 JSON 对象! 使用FastJSON或者Jason进行自动转换)
    • 灵活的结构: 文档不依赖预先定义的模式. 与关系型数据库的提前定义字段才能使用不同,在ElasticSearch中,对于字段是非常灵活的,有时候我们可以忽略该字段,或者动态的添加一个新的字段
  • 索引就是数据库

    • 索引是映射类型的容器,ES中的索引是一个非常大的文档集合,索引存储了映射类型的字段和其他设置
    • 倒排索引
      • 采用Lucene倒排索引作为底层
      • 这种结构适用于快速的全文搜索
      • 一个索引由文档中所有不重复的列表构成,对于每一个词,都有一个包含他的文档列表
      • 搜索时,完全过滤掉无关的所有数据,提高效率
  • 重要步骤

    • 创建索引 (相当于我们的数据库)
    • 字段类型 (mapping 映射)
    • 文档 (具体的数据)
    • 底层的搜索使用的是倒排索引,采用分片的机制,可以使一个索引包含海量的数据

5. IK分词器插件

  • IK分词器对中文具有良好支持的分词器

  • IK分词器包括 ik_max_word 和 ik_smart

    • ik_max_word会将文本做最细粒度的拆分
    • ik_smart 会做最粗粒度的拆分(最少切分)
  • 安装

    • 在Github上下载,与ES版本要对应
    • 解压后放到 ElasticSearch/plugins 目录即可
    • 由于添加了新插件,重启 ES 即可!
    • 可以看到,IK分词器被加载了
    • image-20201029170132815

  • 在Kibana中测试不同的分词器效果

    • 最少切分

      • image-20201029170804999

    • 最细粒度切分,穷尽所有可能

      • image-20201029170901247

  • IK分词器的字典没有一些自定义的词,需要我们自己加到我们的分词器的字典中

    • 比如,我们测试 山人西来 这个词

    • image-20201029171615100

    • 在ik分词器的conf中找到 IKAnalyzer.ofg.xml配置

    • 在conf中,我们写一个自己的字典,叫 mydic.dic,编辑,写入山人西来

    • 在配置文件添加自己的字典

    • <?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">mydic.dic</entry>
      	 <!--用户可以在这里配置自己的扩展停止词字典-->
      	<entry key="ext_stopwords"></entry>
      	<!--用户可以在这里配置远程扩展字典 -->
      	<!-- <entry key="remote_ext_dict">words_location</entry> -->
      	<!--用户可以在这里配置远程扩展停止词字典-->
      	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
      </properties>
      
  • 重启ES,可以看到加载了我们的自定义字典

  • image-20201029171920256

  • 可以看到,我们自定义的 山人西来 已经被认为是一个词了

    • image-20201029172110351

  • 以后,我们需要自己配置需要的分词,在我们自定义的dic文件中进行配置即可!

6. Rest 风格说明

  • RestFul风格是一种软件架构风格,而不是标准an,只是提供了一组设计原则和约束条件

  • method url地址 描述
    PUT localhost:9200/索引名称/类型名称/文档 id 创建文档(指定文档 id)
    POST localhost:9200/索引名称/类型名称 创建文档(随机文档 id)
    POST localhost:9200/索引名称/类型名称/文档 id/_update 修改文档
    DELETE localhost:9200/索引名称/类型名称/文档 id 删除文档
    GET localhost:9200/索引名称/类型名称/文档 id 通过文档 id 查询文档
    POST localhost:9200/索引名称/类型名称/_search 查询所有的数据

7. 关于索引的基本操作

  • 创建一个索引

    • PUT /索引名/~类型名~/文档 id
      {
      	请求体(JSON)
      }
      
    • image-20201030094350469

    • image-20201030094413079

    • 完成了自动增加了索引! 数据也成功的添加了!

    • image-20201030094528115

  • 指定自己的数据类型 (这里是配置好数据的类型)

    • image-20201030094956421

    • PUT /索引名
      {
      	"mappings": {
      		"properties": {
      			字段: {
      				"type": 指定数据类型
      			}
      		}
      	}
      }
      
  • 可以通过GET请求得到具体的信息

    • image-20201030095432889

  • 查看默认的信息

    • 注意,在 ES 8 之后,type会被启用,这里默认为_doc,可以显式的声明,也可以不写!

    • image-20201030095804143

    • 查看默认信息

    • image-20201030095842943

    • 如果自己的文档的字段没有指定,那么ES就会给我们默认的配置字段类型

    • 通过 GET _cat/ 可以查看当前的ES的很多信息

    • image-20201030100258269

  • 修改索引

    • 提交还是使用PUT即可,然后覆盖 (方法1)

    • 缺点: 如果漏写了字段,那么该字段会变成空!

    • image-20201030100659349

    • 使用POST _update,要指定一个字段"doc" (推荐)

    • image-20201030101028474

8. 关于文档的基本操作

1. 基本操作

  • 简单的搜索
    • 简单的条件查询 ==> 可以根据默认的映射规则产生查询结果
    • image-20201030104658034

2. 进阶操作

  • 复杂的搜索 (select ==> 排序,分页,高亮,模糊查询,精准查询)

1. 构建查询

  • 查询结果的 _score : 匹配度,如果存在多条查询出来的结果,匹配度越高则分值越高

  • image-20201030105202041

  • image-20201030105614031

  • hit

  • image-20201030110219730

  • 结果的过滤(只显示部分的字段)

  • image-20201030110333005

  • 使用JAVA操作ES,所有的方法和对象就是这里面的 key!

2. 排序

image-20201030110659782

  • desc 降序,asc 升序

3. 分页

单页面要显示的数据

image-20201030110921177

数据索引下标还是从 0 开始的,和学的所有的数据结构是一样的!

4. 布尔值查询

image-20201030111314096

可以通过布尔值进行多条件精确查询

  • must命令 ==> 所有的条件都要符合 (and)

  • should命令 ==> 只要有一条满足即可 (or)

  • must_not命令 ==> 不符合条件才可以 (not)

5. 过滤 (区间)

image-20201030111846037

  • gte ==> 大于等于 (gt 大于)

  • lte ==> 小于等于(lt 小于)

  • eq ==> 等于

6. 匹配多个条件

多个条件之间使用空格隔开即可,只要满足其中一个结果就可以被查出,这时候可以通过分值进行基本的判断

image-20201030112702605

7. 精确查询

  • term 查询是直接通过倒排索引指定的词条进行精确查找的

  • 关于分词

    • term: 直接查询精确的
    • match: 会使用分词器解析! (先分析文档,然后再通过分析的文档进行查询)
  • 两个类型

    • text: 会被分词器解析
    • keyword: 不会被分词器解析
  • 精确查询多个值: 利用布尔

8. 高亮查询

image-20201030133449418

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读774次,点赞24次,收藏16次。typescript项目中我们使用typings-for-css-modules-loader来替代css-loader实现css modules。1、typings-for-css-modules-loader加载器介绍 Webpack加载器,用作css-loader的替代产品,可动态生成CSS模块的TypeScript类型这句话是什么意思呢?就是编译时处理css文件...
文章浏览阅读784次。react router redux antd eslint prettier less axios_react+antd+redux+less
文章浏览阅读3.9k次,点赞5次,收藏11次。需要删除.security-7索引文件。把在第1步中的被注释的配置打开。之后就是按照提示输入密码。执行bin目录下的文件。_failed to authenticate user 'elastic' against
文章浏览阅读1.2k次,点赞23次,收藏24次。Centos 8 安装es_centos8 yum elasticsearch
文章浏览阅读3.2k次。设置完之后,数据会⾃动同步到其他节点。修改密码时,将第⼀步配置删除,然后重启。单独使⽤⼀个节点⽣成证书;执⾏设置⽤户名和密码的命令。执⾏完上⾯命令以后就可以在。⽂件,在⾥⾯添加如下内容。这个⽂件复制到其他节点下。其中⼀个节点设置密码即可。依次对每个账户设置密码。全部节点都要重启⼀遍。需要在配置⽂件中开启。个⽤户分别设置密码,⽬录下,证书⽂件名为。功能,并指定证书位置。_es设置账号和密码
文章浏览阅读1.9k次,点赞2次,收藏7次。针对多数据源写入的场景,可以借助MQ实现异步的多源写入,这种情况下各个源的写入逻辑互不干扰,不会由于单个数据源写入异常或缓慢影响其他数据源的写入,虽然整体写入的吞吐量增大了,但是由于MQ消费是异步消费,所以不适合实时业务场景。不易出现数据丢失问题,主要基于MQ消息的消费保障机制,比如ES宕机或者写入失败,还能重新消费MQ消息。针对这种情况,有数据强一致性要求的,就必须双写放到事务中来处理,而一旦用上事物,则性能下降更加明显。可能出现延时问题:MQ是异步消费模型,用户写入的数据不一定可以马上看到,造成延时。_mysql同步es
文章浏览阅读3.6w次,点赞48次,收藏44次。【程序员洲洲送书福利-第十九期】《C++ Core Guidelines解析》
文章浏览阅读1.3k次。当我们在开发Vue应用时,经常需要对表单进行校验,以确保用户输入的数据符合预期。Vue提供了一个强大的校验规则机制,通过定义rules规则,可以方便地对表单进行验证,并给出相应的错误提示。_vue ruler校验
文章浏览阅读2k次,点赞16次,收藏12次。Linux内核源码下载地址及方式_linux源码下载
文章浏览阅读1k次。这样在每天自动生成的索引skywalking_log_xxx就会使用上述模版来生成,timestamp会被设置成date类型。然后此时在–>索引管理–>kibana–>索引模式添加skywalking_log*索引时就会有时间字段了。在通过skywalking将日志收集到es后,由于skywalking收集的日志(skywalking_log索引)没有date类型的字段导致在es上再索引模式中没有时间范围的查询。skywalking收集的日志有时间戳字段timestamp,只是默认为long类型。_skywalking timestamp
文章浏览阅读937次,点赞18次,收藏21次。1.初始化git仓库,使用git int命令。2.添加文件到git仓库,两步走:2.1 使用命令,注意,可反复多次使用,添加多个文件;2.2 使用命令,完成。此笔记是我个人学习记录笔记,通过廖雪峰的笔记进行学习,用自己能理解的笔记记录下来,如果侵权,联系删。不存在任何盈利性质,单纯发布后,用于自己学习回顾。
文章浏览阅读786次,点赞8次,收藏7次。上述示例中的 origin 是远程仓库的名称,https://github.com/example/repository.git 是远程仓库的 URL,(fetch) 表示该远程仓库用于获取更新,(push) 表示该远程仓库用于推送更新。你可以选择在本地仓库创建与远程仓库分支对应的本地分支,也可以直接将本地仓库的分支推送到远程仓库的对应分支。将 替换为远程仓库的名称(例如 origin), 替换为要推送的本地分支的名称, 替换为要推送到的远程分支的名称。_git remote 智能切换仓库
文章浏览阅读1.5k次。配置eslint校验代码工具_eslint 实时校验
文章浏览阅读1.2k次,点赞28次,收藏26次。Git入门基础介绍,什么是Git,如何使用Git,以及Git的工作的基本原理
文章浏览阅读2.7k次。基于官方给出的几种不同环境不同的安装方式,本文将会选择在使用.zip文件在Windows上安装Elasticsearch在Linux或macOS上从存档文件安装ElasticsearchInstall Elasticsearch with Docker (此种方式待定)使用Docker安装Elasticsearch。_elasticsearch安装部署windows
文章浏览阅读3.3k次,点赞5次,收藏11次。【Linux驱动】内核模块编译 —— make modules 的使用(单模块编译、多模块编译)_make modules
文章浏览阅读1k次。docker启动es报错_max virtual memory areas vm.max_map_count [65530] is too low, increase to at
文章浏览阅读4.2k次,点赞2次,收藏6次。使用docker单机安装elasticsearch后再安装kibana时找不到es。_unable to retrieve version information from elasticsearch nodes. security_ex
文章浏览阅读1.1k次。日志处理对于任何现代IT系统都是关键部分,本教程专为新手设计,通过详细解释Logstash的三大核心组件,为您展示如何从零开始搭建强大的日志处理系统。您还将学习如何同步MySQL数据到Elasticsearch,并通过一个"Hello World"示例快速入门。无论您是完全的新手还是有一些基础,本教程都将引导您顺利掌握Logstash的基本操作和高级应用。_logstash mysql
文章浏览阅读1.1w次,点赞5次,收藏25次。执行这条指令之后,你的本地项目就与远程Git仓库建立了连接,你就可以开始对你的代码进行版本追踪和协作开发了。使用“git remote add origin”指令,可以轻松地将本地项目连接到远程Git仓库。git remote set-url origin 执行这条指令之后,Git就会将已经添加的名为“origin”的仓库删除。git remote add origin 其中,是你的远程Git仓库的网址。_git remote add origin