| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> ElasticSearch核心概念与REST风格说明 -> 正文阅读 |
|
[大数据]ElasticSearch核心概念与REST风格说明 |
ElasticSearch核心概念与REST风格说明上一篇学习笔记: ElasticSearch概述与安装 ElasticSearch核心概念1、索引(ElasticSearch)包多个分片 2、字段类型(映射)mapping )字段类型映射(字段是整型,还是字符型…) 3、文档(documents) 4、分片(Lucene索引,倒排索引) elasticsearch是面向文档,关系型数据库和elasticsearch客观的对比!一切都是json! elasticsearch(集群)中可以包含多个索引(数据库) ,每个索引中可以包含多个类型(表) ,每个类型下又包含多个文档(行) ,每个文档中又包含多个字段(列)。
物理设计: elasticsearch在后台把每个索引划分成多个分片。每个分片可以在集群中的不同服务器间迁移 一个人就是一个集群! ,即启动的ElasticSearch服务,默认就是一个集群,且默认集群名为elasticsearch 索引(index)一个索引可以理解成一个关系型数据库 索引是映射类型的容器, elasticsearch中的索引是一个非常大的文档集合。索|存储了映射类型的字段和其他设置。然后它们被存储到了各个分片上了。我们来研究下分片是如何工作的。使用elasticsearch-head-master新建索引。
类型(type)一种type就像一类表,比如user表,order表。 注意: ES5.X中一个index可以有多种type 映射(mapping)Mapping定义了每个字段的类型等信息,相当于关系数据库中的表结构 文档(document)一个document相当于关系型数据库中的一行记录。 字段相当于关系型数据库表的字段 集群集群由一个或多个节点组成,一个集群有一个默认名称”elaticsearch” 节点集群的节点,一台机器或者一个进程 分片和副本分片:是ES中所有数据文件块,也就是数据的最小单元块,ES中所有数据均衡的存储在集群中各个节点的分片中,会影响ES的性能、安全和稳定性, 所以很有必要了解一下它。单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能 副本:一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。 副本是分片的副本,分片有主分片(primary Shard)和副分片(replica Shard)之分 一个集群至少有一 个节点,而一个节点就是一-个elasricsearch进程 ,节点可以有多个索引默认的,如果你创建索引,那么索引将会有个5个分片( primary shard ,又称主分片)构成的,每一个主分片会有-一个副本( replica shard ,又称复制分片) 倒排索引elasticsearch使用的是一种称为倒排索引 |的结构,采用Lucene倒排索作为底层。这种结构适用于快速的全文搜索,一个索引由文档中所有不重复的列表构成,对于每一个词,都有一个包含它的文档列表。 例如,现在有两个文档,每个文档包含如下内容:
为了创建倒排索引,我们首先要将每个文档拆分成独立的词(或称为词条或者tokens) ,然后创建一一个包含所有不重 复的词条的排序列表,然后列出每个词条出现在哪个文档: 现在,我们试图搜索 to forever,只需要查看包含每个词条的文档
接下来的一切操作都在kibana中Dev Tools下的Console里完成。基础操作! IK分词器(elasticsearch插件)使用上一篇博客已经写了如何安装(https://blog.csdn.net/weixin_43190854/article/details/120493666?spm=1001.2014.3001.5501),现在来学学 如何使用。 IK分词器 中文分词器 分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一一个匹配操作,默认的中文分词是将每个字看成一个词(不使用用IK分词器的情况下),比如“我爱中国”会被分为”我”,”爱”,”中”,”国” ,这显然是不符合要求的,所以我们需要安装中文分词器ik来解决这个问题。 IK提供了两个分词算法: (ik_smart和ik_max_word ),其中ik_smart为最少切分,ik_max_word为最细粒度划分! ik_smartik_smart:最少切分 ik_max_wordik_max_word:最细粒度划分(穷尽词库的可能) standardstandard:默认分词器,按词切分,小写处理 ik 分词器增加自己的配置 添加自定义的词添加到扩展字典中 elasticsearch目录/plugins/ik/config/IKAnalyzer.cfg.xml
Rest风格说明一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 基本Rest命令说明
关于索引的基本操作1、创建一个索引,添加数据
字符串类型:text、keyword text:支持分词,全文检索,支持模糊、精确查询,不支持聚合,排序操作; keyword:不进行分词,直接索引、支持模糊、支持精确匹配,支持聚合、排序操作。 数值型:long、Integer、short、byte、double、float、half float、scaled float 日期类型:date 布尔类型:boolean 二进制类型:binary 等等… 3、指定字段的类型(使用PUT) 创建规则 类似于建库(建立索引和字段对应类型),也可看做规则的建立
两种方案 方案一:旧的(使用put覆盖原来的值) 版本+1(_version)
通过DELETE 命令实现删除,根据你的请求来判断是删除索引还是删除文档记录!
使用RESTFUL 风格是我们ES推荐大家使用的! 关于文档的基本操作(重点)1、添加数据
4、Post _update,推荐使用这种更新方式!
简单的条件查询,可以根据默认的映射规则,产生基本的查询!
搜索过滤
布尔值查询 must(and),所有的条件都要符合 where id=1 and name = xxx
range范围
term查询是直接通过倒排索引指定的词条进程精确查找的 关于分词
多个值匹配精确查询
默认高亮样式
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 23:58:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |