ElasticSearch-学习笔记-阶段总结(易错点易混淆点归纳)

news2024/11/17 3:37:52
  • Java后端-学习路线-笔记汇总表【黑马程序员】
  1. ElasticSearch-学习笔记01【ElasticSearch基本介绍】【day01】
  2. ElasticSearch-学习笔记02【ElasticSearch索引库维护】
  3. ElasticSearch-学习笔记03【ElasticSearch集群】
  4. ElasticSearch-学习笔记04【Java客户端操作索引库】【day02】
  5. ElasticSearch-学习笔记05【SpringDataElasticSearch】

目录

day01

ES简介

ES启动方法

ES与关系型数据库的通俗比较

映射mapping

集群cluster

节点node

ElasticSearch的客户端操作

Postman工具

ElasticSearch的接口语法

ES查询数据的三种方式

1、根据id查询

2、根据关键词查询(term查询)

3、根据字符串查询(querystring查询)

集群概念

ES集群搭建

day02


day01

ES简介

Elasticsearch是一个接近实时的搜索平台。这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒以内)。

ES启动方法

1、启动ES服务:点击ElasticSearch下的bin目录下的elasticsearch.bat,http://localhost:9200,通过浏览器访问ElasticSearch服务器。

2、在head中按“shift”键打开powershell,输入“grunt server”启动——http://localhost:9100。

通过安装ElasticSearch的head插件,完成图形化界面的效 果,完成索引数据的查看。

ES与关系型数据库的通俗比较

Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。Elasticsearch比传统关系型数据库如下:

es集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档(数据)包含多个字段(Fields)(列)

映射mapping

mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分析器、是否被索引等等,这些都是映射里面可以设置的,其它就是处理es里面数据的一些使用规则设置也叫做映射,按着最优规则处理数据对性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能对性能更好。

集群cluster

一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能。一个集群由一个唯一的名字标识,这个名字默认就是“elasticsearch”。这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群。

节点node

一个节点是集群中的一个服务器,作为集群的一部分,它存储数据,参与集群的索引和搜索功能。和集群类似,一个节点也是由一个名字来标识的,默认情况下,这个名字是一个随机的漫威漫画角色的名字,这个名字会在启动的时候赋予节点。这个名字对于管理工作来说挺重要的,因为在这个管理过程中,你会去确定网络中的哪些服务器对应于Elasticsearch集群中的哪些节点。

ElasticSearch的客户端操作

实际开发中,主要有三种方式可以作为elasticsearch服务的客户端:

  1. 第一种,elasticsearch-head插件;
  2. 第二种,使用elasticsearch提供的Restful接口直接访问;
  3. 第三种,使用elasticsearch提供的API进行访问。

Postman工具

Postman中文版是postman这款强大网页调试工具的windows客户端,提供功能强大的Web API & HTTP请求调试。软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化。Postman中文版能够发送任何类型的HTTP请求 (GET, HEAD, POST, PUT..),且可以附带任何数量的参数。

ElasticSearch的接口语法

增删改查:get、post、put、delete。

  1. 查询数据:GET
  2. 修改数据:POST
  3. 增加数据:PUT
  4. 删除数据:DELETE
设置映射mappings
{
    "mappings": {
        "article": {//type名称,相当于表,type可以有多个。hello
            "properties": {//属性,字段
                "id": {//字段1
                    "type": "long",
                    "store": true,
                    "index": "not_analyzed"//默认不索引
                },
                "title": {//字段2
                    "type": "text",
                    "store": true,
                    "index": "analyzed",
                    "analyzer": "standard"//标准分词器
                },
                "content": {//字段3
                    "type": "text",//文本类型
                    "store": true,//存储
                    "index": "analyzed",//要索引
                    "analyzer": "standard"//标准分词器
                }
            }
        }
    }
}

http://127.0.0.1:9200/blog/hello/_mappings

  1. blog:索引名称
  2. hello:type名称
  3. _mappings:设置mappings

请求url:POST localhost:9200/blog/hello/1

  1. blog:index(索引,类似于数据库)
  2. hello:type(表)
  3. 1:文档id

请求体:
{
    "id": 1,
    "title": "新添加的文档",
    "content": "新添加的文档的内容。"
}

ES查询数据的三种方式

三种查询方式:

  1. 根据id查询
  2. 根据关键词查询
  3. 根据字符串查询

1、根据id查询

GET localhost:9200/blog1/article/1

2、根据关键词查询(term查询)

POST localhost:9200/blog1/article/_search

{
    "query": {
        "term": {
            "title": "修"
        }
    }
}

3、根据字符串查询(querystring查询)

POST localhost:9200/blog1/article/_search

{//查询文档-queryString查询
    "query": {
        "query_string": {//使用字符串查询
            "default_field": "title",//指定默认搜索域
            "query": "文档内容"//指定查询条件
        }
    }
}

集群概念

一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能。

集群的逻辑结构和物理结构

ES集群搭建

ES集群搭建

  1. 准备三台elasticsearch服务器:创建elasticsearch-cluster文件夹,在内部复制三个elasticsearch服务;
  2. 修改每台服务器配置:修改elasticsearch-cluster\node*\config\elasticsearch.yml配置文件。
#节点1的配置信息:
#集群名称,保证唯一
cluster.name: my-elasticsearch
#节点名称,必须不一样
node.name: node-1
#必须为本机的ip地址
network.host: 127.0.0.1
#服务端口号,在同一机器下必须不一样
http.port: 9201
#集群间通信端口号,在同一机器下必须不一样
transport.tcp.port: 9301
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
 
#节点2的配置信息:
#集群名称,保证唯一
cluster.name: my-elasticsearch
#节点名称,必须不一样
node.name: node-2
#必须为本机的ip地址
network.host: 127.0.0.1
#服务端口号,在同一机器下必须不一样
http.port: 9202
#集群间通信端口号,在同一机器下必须不一样
transport.tcp.port: 9302
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
 
#节点3的配置信息:
#集群名称,保证唯一
cluster.name: my-elasticsearch
#节点名称,必须不一样
node.name: node-3
#必须为本机的ip地址
network.host: 127.0.0.1
#服务端口号,在同一机器下必须不一样
http.port: 9203
#集群间通信端口号,在同一机器下必须不一样
transport.tcp.port: 9303
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]

day02

一、使用Java客户端管理ES
1、创建索引库
    步骤:
    1)创建一个Java工程
    2)添加jar包,添加maven的坐标
    3)编写测试方法实现创建索引库
        1、创建一个Settings对象,相当于是一个配置信息,主要用于配置集群的名称
        2、创建一个客户端Client对象
        3、使用client对象创建一个索引库
        4、关闭client对象
2、使用Java客户端设置Mappings
    步骤:
    1)创建一个Settings对象
    2)创建一个Client对象
    3)创建一个mapping信息,应该是一个json数据,可以是字符串也可以是XContextBuilder对象
    4)使用client向es服务器发送mapping信息
    5)关闭client对象
3、添加文档(一行数据)
    步骤:
    1)创建一个Settings对象
    2)创建一个Client对象
    3)创建一个文档对象,创建一个json格式的字符串或者使用XContentBuilder
    4)使用Client对象把文档添加到索引库中
    5)关闭client
4、添加文档的第二种方式
    创建一个pojo类
    使用工具类把pojo转换成json字符串
    把文档写入索引库

二、使用ES客户端实现搜索
1、根据id搜索
    QueryBuilder queryBuilder = QueryBuilders.idsQuery().addIds("1", "2");
2、根据Term查询(关键词)
    QueryBuilder queryBuilder = QueryBuilders.termQuery("title", "北方");
3、QueryString查询方式(带分析的查询)
    QueryBuilder queryBuilder = QueryBuilders.queryStringQuery("速度与激情").defaultField("title");
    查询步骤:
    1)创建一个Client对象
    2)创建一个查询对象,可以使用QueryBuilders工具类创建QueryBuilder对象
    3)使用client执行查询
    4)得到查询的结果
    5)取查询结果的总记录数
    6)取查询结果列表
    7)关闭client
4、分页的处理
    在client对象执行查询之前,设置分页信息。
    然后再执行查询
    //执行查询
    SearchResponse searchResponse = client.prepareSearch("index_hello")
                .setTypes("article")
                .setQuery(queryBuilder)
                //设置分页信息
                .setFrom(0)
                //每页显示的行数
                .setSize(5)
                .get();
    分页需要设置两个值:from、size
        from:起始的行号,从0开始。
        size:每页显示的记录数
5、查询结果高亮显示
(1)高亮的配置
        1)设置高亮显示的字段
        2)设置高亮显示的前缀
        3)设置高亮显示的后缀
(2)在client对象执行查询之前,设置高亮显示的信息
(3)遍历结果列表时可以从结果中取高亮结果

三、SpringDataElasticSearch
1、工程搭建
    1)创建一个java工程。
    2)把相关jar包添加到工程中,如果maven工程就添加坐标。
    3)创建一个spring的配置文件
        1、配置elasticsearch:transport-client
        2、配置elasticsearch:repositories,包扫描器,扫描dao
        3、配置elasticsearchTemplate对象,就是一个bean
2、管理索引库
    1、创建一个Entity类,其实就是一个JavaBean(pojo)映射到一个Document上
            需要添加一些注解进行标注。
    2、创建一个Dao,是一个接口,需要继承ElasticSearchRepository接口。
    3、编写测试代码。
3、创建索引
    直接使用ElasticsearchTemplate对象的createIndex方法创建索引,并配置映射关系。
4、添加与更新文档
    1)创建一个Article对象
    2)使用ArticleRepository对象向索引库中添加文档。
5、删除文档
    直接使用ArticleRepository对象的deleteById方法直接删除。
6、查询索引库
    直接使用ArticleRepository对象的查询方法
7、自定义查询方法
    需要根据SpringDataES的命名规则来命名
    如果不设置分页信息,默认带分页,每页显示10条数据。
    如果设置分页信息,应该在方法中添加一个参数Pageable
        Pageable pageable = PageRequest.of(0, 15);
    注意:设置分页信息,默认是从0页开始。
    可以对搜索的内容先分词然后再进行查询,每个词之间都是and的关系。
8、使用原生的查询条件查询
    NativeSearchQuery对象。
    使用方法:
        1)创建一个NativeSearchQuery对象
            设置查询条件,QueryBuilder对象
        2)使用ElasticSearchTemplate对象执行查询
        3)取查询结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/342242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于python shapely的几何集合操作

前言shapely是基于笛卡尔坐标的几何对象操作和分析Python库。底层基于GEOS和JTS库。shapely无法读取和写数据文件,但可以基于应用广泛的一些格式和协议进行序列化(serialize)和去序列化(deserialize)操作。而且shapely不关注数据格式和坐标系统,但shapel…

05 react img css修改svg图片样式

react img css修改svg图片样式svg图片的相关理论定义优点前端引入svg图片的方式方式一&#xff1a;<svg>标签引入&#xff0c;内嵌到 HTML 中方式二&#xff0c;修改svg的颜色方式三&#xff1a;<img>标签引入1、元素模糊2、元素亮度3、元素投影4、元素的灰色程度5…

乐鑫特权隔离机制的 OTA 固件升级

固件空中升级 (OTA, Over-The-Air) 是任何联网设备的重要功能之一&#xff0c;支持开发人员通过远程更新固件&#xff0c;以发布新功能或修复错误。乐鑫特权隔离框架中包含两类应用程序&#xff1a;受保护的应用程序 (protected_app) 和用户应用程序 (user_app) &#xff0c;这…

互联网舆情监测系统的发展阶段,TOOM互联网舆情监测系统有哪些?

互联网舆情监测系统是一种利用计算机技术对互联网上的大量信息进行实时监测、分析和评估的工具&#xff0c;旨在了解公众对某一事件、话题或品牌等的态度、情感倾向和影响力等。通过对社交媒体、论坛、新闻媒体等多个渠道的数据采集和处理&#xff0c;系统能够实现舆情事件的追…

【学习总结】IMU预积分推导

本文仅用于记录自己学习总结。记录IMU预积分推导过程&#xff0c;不包含具体原理。 符号表示 RRR: 表示旋转矩阵 vvv: 表示速度 ppp: 表示位移 ExpExpExp: 指数映射&#xff0c;将旋转向量映射为旋转矩阵 w~\widetilde{w}w: 角速度观测值 f~\widetilde{f}f​: 加速度观测值 bg…

【Hello Linux】Linux工具介绍 (yum vim)

作者&#xff1a;小萌新 专栏&#xff1a;Linux 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;介绍Linux的常用工具 yum和vim Linux工具介绍Linux中的软件管理工具 -- yum在windows下安装软件的方式在Linux下安装软件的方式认识yum…

安警官的IP地址是怎样定位到莽村附近的?

要说最近大火的电视剧非《狂飙》莫属。电视剧《狂飙》自开播以来&#xff0c;一举超过《三体》《去有风的地方》等先播电视剧&#xff0c;收视率一路“狂飙”&#xff0c;牢牢占据近期的收视冠军。 在剧中&#xff0c;张译扮演一名坚持公平、正义与理想的人民警察“安欣”&…

20230210组会总结

文章目录Ultra-High-Definition Low-Light Image Enhancement: A Benchmark and Transformer-Based MethodShuffleMixer: An Efficient ConvNet for Image Super-ResolutionA Close Look at Spatial Modeling: From Attention to ConvolutionDEA-Net: Single image dehazing ba…

关于国外服务器租用疑问大全解答

很多人对于租用国外服务器还是有些疑虑的&#xff0c;比如是否违法、价格、是否需要备案等等一系列问题&#xff0c;直接导致了很多有疑虑的用户放弃了使用&#xff0c;那么下面我们就来解答关于这些租用国外服务器的疑问&#xff0c;打消用户的疑虑。 1、租用国外服务器违法吗…

量化选股——基于动量因子的行业风格轮动策略(第1部分—因子测算)

文章目录动量因子与行业轮动概述动量因子的理解投资视角下的行业轮动现象投资者视角与奈特不确定性动量因子在行业风格上的效果测算动量因子效果测算流程概述1. 行业选择&#xff1a;申万一级行业2. 动量因子选择&#xff1a;阿隆指标&#xff08;Aroon&#xff09;3. 测算方法…

java中字符串首字母变大写的两种方法

public class 快速排序 {public static void main(String[] args) {int[] arr new int[]{5, 2, 9, 6, 22, 21};//System.out.println(Arrays.toString(kuaiPai(arr)));// System.out.println(Arrays.asList("dada", "dda", "ddd"));//System.o…

VR全景带你浪漫“狂飙”情人节,见证甜蜜心动

当情人节遇上VR&#xff0c;足以让情侣过一个难忘的情人节。马上情人节就要到了&#xff0c;大家是不是还在绞尽脑汁的想着&#xff0c;如何和另一半过一个浪漫的情人节呢&#xff1f;老套的剧情已经不能吸引人了&#xff0c;让我们看看VR全景给情人节带来了哪些不同的体验吧&a…

喜欢大屏电视?那就选择酷开系统,实现智能生活享受

随着科技的发展和我们生活水平的提高&#xff0c;越来越多的消费者开始认可并习惯使用各种高质量的科技产品&#xff0c;比如喜欢玩游戏的消费者&#xff0c;他们往往会追求流畅性更强、刷新率更快的大显示屏&#xff0c;以此获得更真实刺激的游戏体验&#xff0c;而喜欢追剧的…

面对“开门红”,跨境支付如何寻求新增长曲线?

易观&#xff1a;2022年是第三方支付行业洗牌加剧的一年&#xff0c;在部分机构选择退出的过程中&#xff0c;也有机构开始瞄准跨境业务&#xff0c;成为了支付机构转型的重要方向之一。跨境支付是指两个或及其以上的国家或地区进行国际贸易、国际投资或其他经济活动&#xff0…

基于乐鑫 ESP32 的智能手表

拥有一块自己制作的智能手表是不是听起来就很酷&#xff1f;工程师 Pcadic 基于乐鑫 ESP32-PICO-D4 实现了这个想法&#xff01;他开发了一款能够与我们的手机或任何其他设备互联的智能手表 ESP32-Pico-Watch。 ESP32-Pico-Watch 支持 Wi-Fi、蓝牙、Mesh&#xff0c;拥有 1 个振…

EMX,PROC文件与电感的简单仿真

How To Write EMX PROC File 编写EMX工艺文件需要2方面的信息&#xff1a; GDSII layer number and type 映射到 layer name。 这个信息可以从layermap文件中获取&#xff1b;EMX的manual有相应的介绍&#xff0c;这个过程十分基础且简单容易&#xff0c;简单说就是把GDSII中…

Vue3 中 axios 的安装及使用

目录前言&#xff1a;一、什么是 axios &#xff1f;二、Axios 的配置项三、Axios 的请求方式四、自定义创建实例五、Axios 请求错误处理六、Axios 解决跨域问题七、Axios 请求案例随机笑话大全总结&#xff1a;前言&#xff1a; 在编写vue里的项目时&#xff0c;必须要用和后台…

微信小程序 java springboot招聘求职应聘简历系统

应聘系统是基于微信小程序&#xff0c;java编程语言&#xff0c;mysql数据库&#xff0c;springboot框架&#xff0c;idea工具开发&#xff0c;本系统主要分为用户&#xff0c;企业&#xff0c;管理员三个角色&#xff0c;用户注册登陆小程序&#xff0c;查看应聘分类&#xff…

C语言经典编程题100例(41~60)

目录41、习题4-4 特殊a串数列求和42、习题4-6 水仙花数43、习题4-7 最大公约数和最小公倍数44、习题7-5 找鞍点45、练习5-1 求m到n之和46、练习5-2 找两个数中最大者47、练习5-3 数字金字塔48、习题5-1 符号函数49、习题5-2 使用函数求奇数和50、习题5-3 使用函数计算两点间的距…

低代码开发平台让数据应用不再复杂

当前&#xff0c;数据已成为实现经济高质量增长的关键要素&#xff0c;最大化释放数据要素的价值是数字经济时代的重点。以数据全方位驱动企业发展&#xff0c;已成为数字经济时代企业塑造核心竞争力的关键。随着人机协同程度的日益提高&#xff0c;数据不再只是用来被动支持决…