| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 关于ElasticSearch(es) 的基本使用教程总结(全) -> 正文阅读 |
|
[大数据]关于ElasticSearch(es) 的基本使用教程总结(全) |
关于各个组件安装教程可以参考docker安装elasticsearch(最详细版)_bright的博客-CSDN博客_docker安装elasticsearch 一开始可能不是很详细,内容会不断更新,欢迎大家指正,我只记关键的如果有想从头第一次学的建议先看视频 目录 ElasticSearch介绍Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。?通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。本身扩展性好,可以扩展到上百台服务器,处理 PB 级别的数据。 ElasticSearch 与 Solr 的区别1、ElasticSearch 开箱即用,Solr 需要安装。 ElasticSearch 核心概念ElasticSearch 是面向文档的索引,ElasticSearch 与关系型数据库的对比: ElasticSearch 本身就是集群,可以通过可视化界面右上角你的信息查看。ElasticSearch 的默认集群名就是 elasticsearch。ElasticSearch 在后台把每个索引划分成多个分片,每分分片可以在集群中的不同服务器间迁移。 文档:一条条数据和记录,是索引和搜索数据的最小单位,是键值对,是 Json 对象。 倒排索引ElasticSearch 使用的是一种称为倒排索引的结构,采用 Lucene 倒排索引作为底层。这种结构适用于快速的全文搜索,一个索引由文档中所有不重复的列表构成,对于每一个词,都有一个包含它的文档列表。文档保存到索引库的时候,将每个文档拆分成独立的词(或称为词条或 tokens ),创建包含所有不重复的词条的排序列表,列出每个词条出现在哪个文档,两个文档都匹配,但是第一个文档比第二个匹配程度更高。如果没有别的条件,这两个包含关键字的文档都将返回。 IK 分词器IK 提供了两个分词算法:ik_smart 和 ik_max_word。其中 ik_smart 为最少切分,ik_max_word 为最细粒度划分。 ?<?xml version="1.0" encoding="UTF-8"?> ?记得重启es 字段类型概述字符串类型:text、keyword ? 字符串类型ElasticSearch对字符串拥有两种完全不同的搜索方式. 你可以按照整个文本进行匹配, 即关键词搜索(keyword search), 也可以按单个字符匹配, 即全文搜索(full-text search).前者的字符串被称为not-analyzed字符, 而后者被称作analyzed字符串。text用于全文搜索的, 而keyword用于关键词搜索. ? text当一个字段是要被全文搜索的,比如Email内容、产品描述,应该使用text类型。设置text类型以后,字段内容会被分析,在生成倒排索引以前,字符串会被分析器分成一个一个词项。text类型的字段不用于排序,很少用于聚合。 PUT my_index { "mappings": { "_doc": { "properties": { "name": { "type": "text" } } } } } } 如果不指定类型,ElasticSearch字符串将默认被同时映射成text和keyword类型,会自动创建下面的动态映射(dynamic mappings): { "foo": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } ignore_above忽略长度超过256字符串。 这就是造成部分字段还会自动生成一个与之对应的“.keyword”字段的原因。 一个字符串字段可以映射为text字段用于全文本搜索,也可以映射为keyword字段用于排序或聚合,这时候需要用到fields设置多字段。如果业务关系中,需要该字段支持两种类型的查询,可以设置为如下形式: PUT my_index { "mappings": { "_doc": { "properties": { "name": { "type": "text", "fields": { "raw": { "type": "keyword" } } } } } } } name.raw字段是name字段的keyword版本。 keywordkeyword类型适用于索引结构化的字段,比如email地址、主机名、状态码和标签。如果字段需要进行过滤(比如查找已发布博客中status属性为published的文章)、排序、聚合。keyword类型的字段只能通过精确值搜索到。 { "foo": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } 在ES里为已有索引增加一个新字段以后,老的数据并不会自动就拥有了这个新字段,也就不可能给他一个所谓的默认值。ES里的数据都是文档型的,修改一个文档只能是对原文档做更新,也就是只能借助于重新索引的手段。 ? ?处理 Null 值 | Elasticsearch: 权威指南 | Elastic最好的笔记是官方文档,其他类型的字段就先不介绍了 关于索引的基本操作创建索引:PUT /索引名/类型名/文档id{请求体}mappings类似与数据库建表时候指定字段,es中如果不指定es会默认猜帮你创建类型,类型名可以省略(表名)默认_doc 在以后版本可能会被废弃? 获取索引信息: 查看 ElasticSearch 集群的健康值: 更新索引 方法一:重新 PUT,版本号增加,状态变为 updated ?方法2:使用 POST,只更新其中一个字段,可以防止更新时数据遗漏 删除索引 delete?只能删除文档或索引,不能删除类型批量增删改查BULK,必须是POST请求 ? ? 关于文档的基本操作?上边这是查询方式之一?还有一种dsl操作 ? ?hits里面包含了索引的文档的id的信息,里面_source包含了数据,_sorce是指分数,即匹配度,越高的越前 排序 ? 分页 from size 有点像limit start pagesize boolen值查询 上边换成should相当于mysql中的or? 范围查询 ? ?匹配多个值 精确查找是term 是使用倒排索引精确查找 ? ? ?后续在另外一张介绍整合springES |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/28 9:50:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |