Windows使用(版本8.11)ElasticSearch、elasticsearch-head、kibana

2024-01-13 03:28

本文主要是介绍Windows使用(版本8.11)ElasticSearch、elasticsearch-head、kibana,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

下载安装引用这篇文章

目录

      • 1、ES基本知识
        • 核心术语
        • 核心概念
        • 倒排索引
        • ES字典树
        • ES怎么保证读写一致
      • 2、Window启动ES步骤
        • elasticsearch-8.11.3
        • elasticsearch-head-master
        • kibana-8.11.3
      • 3、Kibana 调用ES API示例

1、ES基本知识

核心术语

● 索引:index (相当于表)
● 类型:type (相当于表逻辑类型),早版本有类型
● 文档:document (相当于数据库表的行)
● 字段:fields(相当于数据库表列)

核心概念

● 映射:mapping (相当于表结构后定义)
● 近实时:NRT (Near real time)
● 节点:node (每一个服务器)
● shard replica (数据分片与备份)

倒排索引

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和包含该属性值的各个记录地址。由于不是根据记录来确定属性,而是根据属性来确定记录的位置,所以称之为倒排索引。倒排索引改会在存储数据时将关键词和数据进行关联,保存到倒排表中,然后查询是,将查询内容进行分词后在倒排中进行查询,最后匹配数据即可

ES字典树

字典树又称单词查找树,Trie树,是一种树形结构,是一种哈系树的变种。典型应用于统计,排序和保存大量的字符串。
优点:利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。
3个基本性质:
a. 根节点不包含字符,除根节点外每一个节点都只包含一个字符。
b. 从根节点到某一节点,路径上经过的字符串连接起来,为改节点对应的字符串
c. 每一个节点的所有子节点包含的字符串都不相同。

ES怎么保证读写一致
  1. 更新操作:可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖

每个文档都有一个_version 版本号,这个版本号在文档被改变时加一。Elasticsearch使用这个 _version 保证所有修改都被正确排序,当一个旧版本出现在新版本之后,它会被简单的忽略。利用_version的这一优点确保数据不会因为修改冲突而丢失,比如指定文档的version来做更改,如果那个版本号不是现在的,我们的请求就失败了。

  1. 新增操作:一致性级别支持 quorum/one/all,默认为 quorum,即只有当大多数分片可用时才允许写操作。但即使大多数可用,也可能存在因为网络等原因导致写入副本失败,这样该副本被认为故障,副本将会在一个不同的节点上重建。

● one:写操作只要有一个primary shard是active活跃可用的,就可以执行
● all:写操作必须所有的primary shard和replica shard都是活跃可用的,才可以执行
● quorum:默认值,要求ES中大部分的shard是活跃可用的,才可以执行写操作

  1. 查询读操作:可以设置 replication 为 sync(默认),这使得操作在主分片和副本分片都完成后才会返回;如果设置replication 为 async 时,也可以通过设置搜索请求参数 _preference 为 primary 来查询主分片,确保文档是最新版本

2、Window启动ES步骤

在这里插入图片描述

elasticsearch-8.11.3

1、elasticSearch.bat启动ES
在这里插入图片描述
2、浏览器输入地址:http://localhost:9200/ 出入如下启动成功!
在这里插入图片描述
3、IK分词器放在如下路径
在这里插入图片描述
在这里插入图片描述

elasticsearch-head-master

1、使用npm 启动该项目
2、在如下路径下执行 npm run start
在这里插入图片描述
在这里插入图片描述
3、访问http://localhost:9100 启动成功
在这里插入图片描述

kibana-8.11.3

1、kibana.bat 启动
在这里插入图片描述
2、package.json 修改版本号与ES一致
在这里插入图片描述
在这里插入图片描述
3、访问地址:http://localhost:5601/app/dev_tools#/console 启动成功
在这里插入图片描述
在这里插入图片描述

3、Kibana 调用ES API示例

# ik_smart分词
GET /_analyze
{"analyzer":"ik_smart","text":"我爱你,特靠谱"
}#测试ik_max_word分词
GET /_analyze
{"analyzer":"ik_max_word","text":"我爱你,特靠谱"
}#新建索引
PUT helloes
{"settings": {"number_of_shards": 3,"number_of_replicas": 2}
}#查看指定索引信息
GET /helloes# 查看所有索引信息
GET *# 删除索引
delete /helloes#查看索引是否存在
HEAD /helloes# 创建映射字段(PUT /索引库名/_mapping/类型名称)
PUT /helloes/_mapping
{"properties": {"title": {"type": "text","analyzer": "ik_smart"},"images": {"type": "keyword","index": "false"},"price": {"type": "float"}}
}#查看映射关系
GET /helloes/_mapping#创建文档
POST /helloes/_doc
{ "title":"小米手机","category":"小米","images":"http://www.gulixueyuan.com/xm.jpg","price":3999.00
}#创建文档自定义ID
POST /helloes/_doc/1
{ "title":"小米手机","category":"小米","images":"http://www.gulixueyuan.com/xm.jpg","price":3999.00
}# 文档查询
GET /helloes/_doc/1#搜索当前索引下所有数据
GET /helloes/_search# 删除文档
DELETE /helloes/_doc/1#文档修改 (数据不存在则新增)
POST /helloes/_doc/1
{"title":"华为手机2","category":"华为","images":"http://www.gulixueyuan.com/hw.jpg","price":1999.00
}#修改局部信息
POST /helloes/_update/1
{"doc": {"title":"小米手机","category":"小米"}
}#URL拼接条件查询
GET /helloes/_search?q=category:小米# JSON 格式查询(全文检索)GET /helloes/_search{"query": {"match": {"category": "小"}}}# JSON请求提查询所有数据
GET /helloes/_search
{"query": {"match_all": {}}
}# 查询返回指定字段
GET /helloes/_search
{"query": {"match_all": {}},"_source": ["title"]
}# 分页查找 from:页码, size:页面调试
GET /helloes/_search
{"query": {"match_all": {}},"from": 0,"size": 20
}#查询排序
GET /helloes/_search
{"query": {"match_all": {}},"sort": [{"price": {"order": "desc"}}]
}# 多条件查询
GET /helloes/_search
{"query": {"bool": {"must": [{"match": {"title": "小米"}},{"match": {"price": "1999"}}]}}
}# 值完全匹配
GET /helloes/_search
{"query": {"match_phrase": {"title": "小米"}}
}# 高亮查询
GET /helloes/_search
{"query": {"match_phrase": {"category": "米"}},"highlight": {"fields": {"category": {}//<----高亮这字段}}
}#分组查询
GET /helloes/_search
{"aggs":{//聚合操作"price_group":{//名称,随意起名"terms":{//分组"field":"price"//分组字段}}}
}

这篇关于Windows使用(版本8.11)ElasticSearch、elasticsearch-head、kibana的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/600100

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1