Elastic Search (ES)Java 入门实操(1)下载安装、概念

实现数据查询代码:Elastic Search(ES)Java 入门实操(2)搜索代码-CSDN博客

Elastic Search(ES)Java 入门实操(3)数据同步-CSDN博客

Elastic Search 官方描述,是一个分布式的搜素数据分析引擎,可以集中存储数据,快速完成搜索,微调相关性,进行强大的分析。

ES 中的索引、映射、文档和字段等概念和传统关系型数据库相似。可以结合数据库去理解。比如索引可以理解为表。

ES 使用了倒排索引机制来优化搜索效率。比如”唱跳rap篮球“,根据机制可能会为 唱跳、rap、篮球分别建立索引,当我们搜索其中一个关键词,就能搜索出来相关的结果,然后通过正排索引来详细展示相关文章。

官方文档:Quick start | Elasticsearch Guide [7.17] | Elastic

下载安装

需要下载的有 Elastic Search 和 kibana(可视化界面)

Elastic Search 下载地址:Elasticsearch 7.17.21 | Elastic

kibana 下载地址:Install Kibana on Windows | Kibana Guide [7.17] | Elastic

推荐下载 7.17版本,避免出现其他问题。

下载完成后直接解压即可,路径名不要带有中文

在解压目录的 bin 目录下使用 cmd 命令 elasticsearch 就可以启动,访问端口 localhost:9200

同样的 kibana 也是在 bin 目录下启动 kibana 命令,可视化界面的端口号是 5601

在左侧边栏使用 Dev Tools 即可进入控制台使用 ES 自己的操作数据的语法

DSL

应用最广的,是 Json 格式,好理解,和 http 请求兼容

官方文档:Query DSL | Elasticsearch Guide [7.17] | Elastic

新增数据

井号后面是注释,实际使用不需要

注意:当添加新数据时如果不指定 id ,ES 会自动生成,类型是 string 类型,如果需要在代码层面和 MySQL 同步,最好是新增的时候指定 id ,避免出现类型不同等其他问题。

POST#请求的类型 post_1#表的名称 /_doc/ 5#id
{ #字段和数据"title": "kun","desc": "唱跳"
}#结果
{"_index" : "post_v1","_type" : "_doc","_id" : "5","_version" : 1,"result" : "created","_shards" : {"total" : 2,"successful" : 1,"failed" : 0},"_seq_no" : 6,"_primary_term" : 3
}

查询

#查询对应的表
GET post_v1/_search
#根据 id 查询
GET post_v1/_doc/5

修改

POST post_v1/_doc/5
{"title": "cxk","desc": "ctrl"
}

 实际修改数据和新增数据格式差不多,只需要指定对应的 id 即可,如果表(索引)中没有对应的 id,就会直接创建新的数据。

一句话概括就是有就修改,没有就新增,所以也不会出现重复修改的情况,因为只要有就会修改。

删除

#删除普通索引
DELETE index_name
#删除数据流式索引
DELETE _data_stream/logs-my_app-default

ES 还有其他格式的 Query 格式命令,比如 EQL、SQL、Painless Scrpiting language,详情可以查看官方文档。

Mapping

官方文档:Mapping | Elasticsearch Guide [7.17] | Elastic

相当于数据库表的表结构,字段和字段类型。有的字段不指定会自动生成,比如主键 id。

ES 支持动态 mapping,表结构可以动态改变,如果表结构中不存在的字段,如果插入了数据,也能插入,并新增字段。

也可以手动指定字段类型,显式创建 mapping

PUT user
{"mappings": {"properties": {"age":    { "type": "integer" },  "email":  { "type": "keyword"  }, "name":   { "type": "text"  }     }}
}

分词器

顾名思义,就是 ES 的一种分词策略/规则

官方文档:Test an analyzer | Elasticsearch Guide [7.17] | Elastic

#使用空格分词
POST _analyze
{"analyzer": "whitespace","text":     "The quick brown fox."
}
#标准分词
POST _analyze
{"tokenizer": "standard","filter":  [ "lowercase", "asciifolding" ],"text":      "Is this déja vu?"
}
#关键词分词,整句当作一个关键词,不分开
POST _analyze
{"analyzer": "keyword","text":     "The quick brown fox."
}

官方提供的分词器问题在于对于中文来说不太友好 ,中文是不使用空格作为分隔的。

IK 分词器

中文友好,文档:GitHub - infinilabs/analysis-ik: 🚌 The IK Analysis plugin integrates Lucene IK analyzer into Elasticsearch and OpenSearch, support customized dictionary.

下载地址:Index of: analysis-ik/stable/ (infinilabs.com) 

注意版本,本文的 ES 版本为 7.17.21,避免出现兼容性问题

下载完成后在 ES 文件夹中新建 plugins 文件夹,然后把下载的插件解压到里面。重启 ES 和 kibana 即可加载。

载入成功

IK 分词器有两种:ik_smart、ik_max_word
打个比方,天青色等烟雨而我在等你,ik_smart 是按照系统自己认为的方式进行组词,比如青色,烟雨,ik_max_word 是最大细度得组词,比如,天青,青色,都是系统认为的词语。

POST _analyze
{"analyzer": "ik_smart","text":     "天青色等烟雨而我在等你"
}
#结果
{"tokens" : [{"token" : "天","start_offset" : 0,"end_offset" : 1,"type" : "CN_CHAR","position" : 0},{"token" : "青色","start_offset" : 1,"end_offset" : 3,"type" : "CN_WORD","position" : 1},{"token" : "等","start_offset" : 3,"end_offset" : 4,"type" : "CN_CHAR","position" : 2},{"token" : "烟雨","start_offset" : 4,"end_offset" : 6,"type" : "CN_WORD","position" : 3},{"token" : "而我","start_offset" : 6,"end_offset" : 8,"type" : "CN_WORD","position" : 4},{"token" : "在","start_offset" : 8,"end_offset" : 9,"type" : "CN_CHAR","position" : 5},{"token" : "等你","start_offset" : 9,"end_offset" : 11,"type" : "CN_WORD","position" : 6}]
}
POST _analyze
{"analyzer": "ik_max_word","text":     "天青色等烟雨而我在等你"
}
#结果
{"tokens" : [{"token" : "天青","start_offset" : 0,"end_offset" : 2,"type" : "CN_WORD","position" : 0},{"token" : "青色","start_offset" : 1,"end_offset" : 3,"type" : "CN_WORD","position" : 1},{"token" : "等","start_offset" : 3,"end_offset" : 4,"type" : "CN_CHAR","position" : 2},{"token" : "烟雨","start_offset" : 4,"end_offset" : 6,"type" : "CN_WORD","position" : 3},{"token" : "而我","start_offset" : 6,"end_offset" : 8,"type" : "CN_WORD","position" : 4},{"token" : "在","start_offset" : 8,"end_offset" : 9,"type" : "CN_CHAR","position" : 5},{"token" : "等你","start_offset" : 9,"end_offset" : 11,"type" : "CN_WORD","position" : 6}]
}

 即使使用了分词器,系统也不一定能够按照我们想的方式进行分词,比如我叫 李二狗,拆出来是李、二、狗,不会把我的名字作为关键词进行分词。ik有一个词典机制,就和输入法的词库类似,我们只需要将我们想要分成的词写成词典即可。

POST _analyze
{"analyzer": "ik_max_word","text":     "李二狗"
}
#结果
{"tokens" : [{"token" : "李","start_offset" : 0,"end_offset" : 1,"type" : "CN_CHAR","position" : 0},{"token" : "二","start_offset" : 1,"end_offset" : 2,"type" : "TYPE_CNUM","position" : 1},{"token" : "狗","start_offset" : 2,"end_offset" : 3,"type" : "CN_CHAR","position" : 2}]
}

IK 词典

首先进入到 解压的 IK 插件目录,进入 config 目录,elasticsearch-7.17.21\plugins\ik\config。

找到 IKAnalyzer.cfg.xml 文件,打开可以看见这里就是添加词典的地方

然后在 config 目录下新建一个词典,名字最好是中文,后缀是 .dic,然后在里面加上想要作为分词的词组。

再然后在刚刚的文件中把词典添加进去

重启 ES 和 kibana,测试,发现按照词典进行分词了。

篇幅有限,Java 整合 ES 在下一篇文章。

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

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

相关文章

Python下载库

注:本文一律使用windows讲解。 一、使用cmd下载 先用快捷键win R打开"运行"窗口,如下图。 在输入框中输入cmd并按回车Enter或点确定键,随后会出现这个画面: 输入pip install 你想下载的库名,并按回车&…

贰[2],VisionMaster/.NetCore的WPF应用程序调用控件

1,环境 VisionMaster4.2 VisualStudio2022 WPF/.Net6.0 2,记录原因 .NetFrameWork的WPF应用程序调用添加例程.NetFrameWork的Winform应用程序相应的库,不会出现报错,界面也能正常显示操作,但是.NetCore的程序却总是…

JavaScript入门宝典:核心知识全攻略(下)

文章目录 前言一、获取标签元素二、操作标签元素属性1. 属性的操作2. innerHTML 三、数组及操作方法1. 数组的定义2. 数组的操作 四、循环语句五、字符串拼接六、定时器1. 定时器的使用3. 清除定时器 七、ajax1. ajax的介绍2. ajax的使用 前言 JavaScript是前端开发不可或缺的技…

Typescript 中 tsconfig.json 无法写入文件,因为它会覆盖输入文件

先来看看问题 在开发ts项目的时候,包错提示无法写入文件 tsconfig.json无法写入文件"url"因为它会覆盖输入文件 这是tsconfig.json文件配置问题,需要加入下面的配置就好了: {"compilerOptions": {"outDir": …

【MySQL数据库】:MySQL索引特性

目录 索引的概念 磁盘 磁盘的基本特征 MySQL与磁盘交互的基本单位 索引的理解 建立测试表 理解单个Page 理解多个Page 页目录 单页情况 多页情况 索引的数据结构 聚簇索引 VS 非聚簇索引 索引操作 创建主键索引 创建唯一索引 创建普通索引 创建全文索引 查询…

海宁代理记账公司-专业的会计服务

随着中国经济的飞速发展,企业的规模和数量日益扩大,在这个过程中,如何保证企业的财务活动合规、准确无误地进行,成为了每个企业面临的重要问题,专业、可靠的代理记账公司应运而生。 海宁代理记账公司的主要职责就是为各…

Prism 入门06,发布订阅(入门完结)

本章节介绍使用 Prism 框架的消息聚合器 IEventAggregator ,实现如何进行消息发布,订阅,取消订阅的功能 继续使用上一章节使用的 Prism WPF 空模板项目 BlankApp1 1.首先,在使用 Prism 框架当中,进行事件消息的发布和订阅之前,需要定义发布事件的事件消息模型。如下所示:…

端午节景区视频监控方案:智慧景区EasyCVR视频监控系统构建与运用

端午节,作为中国传统节日之一,每年吸引着大量游客前往各地景区参观游览,感受浓厚的文化氛围。然而,随着游客数量的增多,景区管理也面临着越来越多的挑战,其中安全问题尤为突出。因此,实施端午节…

使用 ESPCN 模型进行超分辨率图像处理

前言 使用 ESPCN (Efficient Sub-Pixel CNN) 模型对低分辨率的图像,进行超分辨率处理。 效果展示 lowres 表示低分辨率图像,highres 表示高分辨率图像,prediction 表示模型预测的高分辨率图像,可以看出模型在生成高分辨率图像过…

力扣hot100:155. 最小栈(栈,辅助栈存储相关信息)

LeetCode:155. 最小栈 1、尝试单调栈 看到这题说,要常数时间内检索最小元素的栈,想到了单调栈,递增单调栈确实能维护最小值,但是这个最小值是存在一定意义的,即如果后面出现了最小值,那么前面…

光电管道液位传感器与电容式液位开关相比

如今,随着检测液位技术的不断发展,检测液位的方法也越来越多,比如浮球开关、电容式液位传感器、管道式液位传感器等等,那么光电管道液位传感器与电容式液位开关相比,有哪些优势? 光电管道液位传感器采用先…

论文高级图表绘制(Python语言,局部放大图)

本文将通过一个具体的示例,展示如何使用Python语言和Matplotlib库来绘制高级图表,包括局部放大图的制作。适用于多条曲线绘制在同一个图表中,但由于数据量过大,导致曲线的细节看不清,需要对细节进行局部放大。如下图: 环境准备 首先,确保你的Python环境中已经安装了以…

基于SSM+Jsp的高校信息资源共享平台

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

基于STM32开发的智能家居监控系统

目录 引言环境准备智能家居监控系统基础代码实现:实现智能家居监控系统 4.1 传感器数据读取4.2 电器设备控制4.3 实时数据监控与分析4.4 用户界面与数据可视化应用场景:家庭安全监控与管理问题解决方案与优化收尾与总结 1. 引言 随着智能家居技术的发…

FM151A,FM171B和利时工控

FM151A,FM171B和利时工控,DCS系统应该具备以下特点:1.系统具备开放的体系结构,可以提供多层的开放数据接口;FM151A,FM171B和利时工控。2.系统应具备强大的处理功能,中型分布式控制系统大型数据采集监控系统功能。FM151…

[数据集][目标检测]室内积水检测数据集VOC+YOLO格式761张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):761 标注数量(xml文件个数):761 标注数量(txt文件个数):761 标注类别…

使用小黄鸟(HttpCanary)、VMOS Pro虚拟机对手机APP进行抓包(附带软件)

老规矩先看,效果图: 文章很详细,希望可以耐心看完,保证可以学会抓包,不再走冤枉路,小编在之前看过太多类似文章,折腾了太久才搞懂的,写这篇文章就是不想希望你们像小编一样再花时间…

mac无法读取windows分区怎么办 苹果硬盘怎么读取

对于Mac电脑用户但有Windows系统使用需求的,我们可以通过Boot Camp启动转换助理安装Windows分区这个方案来解决,不过因为两个系统的磁盘格式不同,相应的也会产生一些问题,例如无法正常读取windows分区。下面本文就详细说明mac无法…

在Java中使用SeleniumAPI,超详细

Java中 Selenium相关操作 1 定位元素 1.1 css选择器定位元素 就是定位到页面的元素,本质上就是一个一个的语法 下面举几个具体的例子: 类选择器 按照给定的 class 属性的值,选择所有匹配的元素。 语法:.classname 例子&am…

素颜个人引导页源码

源码介绍 素颜个人引导页源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 效果预览 源码下载 素颜个人引导页源码