热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ElasticSearch7.x的基本操作学习(一):概念了解

什么是ElasticSearchElasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接
什么是ElasticSearch

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

简单来说:就是用于做全文搜索,结构化搜索,分析使用;


1.ElasticSearch的安装

注意:对于java的JDK要求,最低也得1.8

点击进入es官网地址下载

IK分词器下载

Kibana华为云镜像下载

1.1ES的启动在这里插入图片描述


  • 启动成功,出现127.0.0.1/9200
    在这里插入图片描述
  • 访问一下呗~
    在这里插入图片描述

2.安装ES的可视化界面:es-head

点击获取es-head的下载地址

注意:在windows下,安装head插件需要NodeJS的环境;

在head插件中,输入cmd打开终端窗口,输入npm run start 启动前端项目

在这里插入图片描述

  • 打开页面,发现已经启动好了head插件

在这里插入图片描述

注意:第一次启动head插件的时候可能会出现跨域错误,改如何解决:
打开es->找到config文件夹->打开elasticsearch.yml->配置下图内容即可:
在这里插入图片描述

2.1利用head插件创建一个索引

对于初学:我自己的建议是把es看做一张数据库表就可以了,然后可以在数据库中创建表等一些操作.

在这里插入图片描述

3.kibana的安装


3.1kibana的介绍

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。
Elasticsearch、Logstash和Kibana这三个技术就是我们常说的ELK技术栈,可以说这三个技术的组合是大数据领域中一个很巧妙的设计。一种很典型的MVC思想,模型持久层,视图层和控制层。Logstash担任控制层的角色,负责搜集和过滤数据。Elasticsearch担任数据持久层的角色,负责储存数据。而我们这章的主题Kibana担任视图层角色,拥有各种维度的查询和分析,并使用图形化的界面展示存放在Elasticsearch中的数据。

作者:叩丁狼教育
链接:https://www.jianshu.com/p/8001ac47c378
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

简单来说:就是用于es的可视化平台,用来搜索,查看交互存储在es中的索引数据.

下载地址:kibana对应的华为云的镜像地址

直接点击启动即可:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

4.ES核心概念

记住一个观点:ES是面向文档

关系型数据和ES的比较:

关系型数据库ElaticSearch
数据库索引(index)
类型
文档
字段属性名称

elasticsearch(集群)中可以包含多个索引(数据库),每个索引中可以包含多个类型(表),每个类型下又包含多个文档(行),每个文档中又包含多个字段(列)。

物理设计:
es把后台的索引分片成多个,每片分片可以在集群的不同的服务器迁移;
就算es只有一台,那么对于它自己而言,它一个就是集群;

文档–>(一条数据)

之前说elasticsearch是面向文档的,那么就意味着索引和搜索数据的最小单位是文档,elasticsearch中,文档有几个重要属性:

自我包含,一篇文档同时包含字段和对应的值,也就是同时包含key:value !
可以是层次型的,一个文档中包含自文档,复杂的逻辑实体就是这么来的! {就是一个json对象 ! fastjson进行自动转换 !}
灵活的结构,文档不依赖预先定义的模式,我们知道关系型数据库中,要提前定义字段才能使用,在elasticsearch中,对于字段是非常灵活的,有时候,我们可以忽略该字段,或者动态的添加一个新的字段。

类型—>(一张表)

类型是文档的逻辑容器,就像关系型数据库一样,表格是行的容器。类型中对于字段的定义称为映射,比如name映射为字符串类型。我们说文档是无模式的,它们不需要拥有映射中所定义的所有字段,比如新增一个字段,那么elasticsearch是怎么做的呢?

elasticsearch会自动的将新字段加入映射,但是这个字段的不确定它是什么类型,elasticsearch就开始猜,如果这个值是18,那么elasticsearch会认为它是整形。但是elasticsearch也可能猜不对,所以最安全的方式就是提前定义好所需要的映射,这点跟关系型数据库殊途同归了,先定义好字段,然后再使用,别整什么幺蛾子。

索引–>(相当于一个数据库,里面可以有很多表)

索引是映射类型的容器, elasticsearch中的索引是一个非常大的文档集合。 索引存储了映射类型的字段和其他设置。然后它们被存储到了各个分片上了。我们来研究下分片是如何工作的。

5.ES的倒排索引


简单说就是 按&#xff08;文章关键字&#xff0c;对应的文档<0个或多个>&#xff09;形式建立索引&#xff0c;根据关键字就可直接查询对应的文档&#xff08;含关键字的&#xff09;&#xff0c;无需查询每一个文档&#xff0c;如下图

在这里插入图片描述比如说我们去查询有python的数据&#xff0c;我们可以不再根据id一个个来查询标签&#xff0c;而是直接找到标签所对应的文章id即可&#xff0c;完全过滤掉无关的数据&#xff0c;提高查询效率。

6.IK分词器(elasticsearch插件)

可以理解为&#xff1a;中文分词器

6.1 IK分词器有什么用呢?

分词&#xff1a;即把一段中文或者别的划分成一个个的关键字&#xff0c;我们在搜索时候会把自己的信息进行分词&#xff0c;会把数据库中或者索引库中的数据进行分词&#xff0c;然后进行一一个匹配操作&#xff0c;默认的中文分词是将每个字看成一个词&#xff08;不使用用IK分词器的情况下&#xff09;&#xff0c;比如“我爱中国”会被分为”我”&#xff0c;”爱”&#xff0c;”狂”&#xff0c;”神” &#xff0c;这显然是不符合要求的&#xff0c;所以我们需要安装中文分词器ik来解决这个问题。

6.2 下载地址:

https://github.com/medcl/elasticsearch-analysis-ik/releases

6.3如何使用

1.下载完毕后&#xff0c;放入es的plugins目录下
在这里插入图片描述2.然后&#xff0c;重启我们的es;
3.测试:
1.ik_smart&#xff1a;最少切分&#xff08;意思是:尽量组成词语&#xff0c;少做切分&#xff09;
在这里插入图片描述
2.ik_max_word&#xff1a;最细粒度划分&#xff08;穷尽词库的可能&#xff0c;尽量组成词语&#xff0c;多做切分&#xff0c;提高查询的可能性&#xff09;
在这里插入图片描述3.从上面看&#xff0c;感觉分词都比较正常&#xff0c;但是大多数&#xff0c;分词都满足不了我们的想法&#xff0c;如下例

在这里插入图片描述那么&#xff0c;我们需要手动将该词添加到分词器的词典当中

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述


推荐阅读
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 那么多优秀的自动化测试工具,而你只知道Selenium?
    如今,作为一名软件测试工程师,几乎所有人都需要具备自动化测试相关的知识,并且懂得如何去利用工具,来为企业减少时间成本和错误成 ... [详细]
  • Kafa功能性介绍
    ApacheKafka是一个开源、分布式发布订阅消息系统,主要设计了下面这些特性:持久化消息:从大数据中提取真正的数据值,任何类型的数据丢失都不能够再获取。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
  • 导读:在编程的世界里,语言纷繁多样,而大部分真正广泛流行的语言并不是那些学术界的产物,而是在通过自由发挥设计出来的。和那些 ... [详细]
  • 与.Net大师Jeffrey Richter面对面交流——TUP对话大师系列活动回顾(多图配详细文字)...
    与.Net大师JeffreyRichter面对面交流——TUP对话大师系列活动回顾(多图配文字)上周末很有幸参加了CSDN举行的TUP活动, ... [详细]
  • 让你明白kvm是什么
    参考:https:blog.csdn.netbbwangjarticledetails80465320KVM工具集合:libvirt:操作和管理KVM虚机的虚拟化API ... [详细]
  • Hadoop——Hive简介和环境配置
    一、Hive的简介和配置1.简介Hive是构建在Hadoop之上的数据操作平台lHive是一个SQL解析引擎,它将SQL转译成MapReduce作业,并 ... [详细]
  • 招聘 | 涂鸦智能招聘IoT安全人才
    招聘 | 涂鸦智能招聘IoT安全人才 ... [详细]
  • 作为老牌的Web后端编程语言,PHP在全球市场占有率非常高。PHP是全球五大热门的编程语言,是唯一入选的脚本语言;从各个招聘网站的数据上来 ... [详细]
  • 只使用’if-else’语句的’else’部分是否可以接受?有时,我觉得检查所有条件是否都是真的更容易,但是只处理“其他”情况。我想 ... [详细]
author-avatar
飞教书的粉红色
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有