ElasticSearch
文章平均质量分 84
ElasticSearch基础
吴声子夜歌
个人学习记录
展开
-
Elasticsearch7.x——spring-boot-starter-data-elasticsearch详解
Spring Data Elasticsearch是Spring Data项目下的一个子模块。查看 Spring Data的官网:http://projects.spring.io/spring-data/Spring Data 的使命是给各种数据访问提供统一的编程接口,不管是关系型数据库(如MySQL),还是非关系数据库(如Redis),或者类似Elasticsearch这样的索引数据库。从而简化开发人员的代码,提高开发效率。Spring Boot与Elasticsearch的对应版本:</原创 2023-10-30 15:00:18 · 4588 阅读 · 5 评论 -
Elasticsearch7.x——High Level REST Client(三)Index APIs
Index Aliases API允许使用名称对索引进行别名,所有API都会自动将别名转换为实际索引名称。Get Index Templates API允许检索一个或多个索引模板的信息。原创 2023-10-25 22:49:55 · 348 阅读 · 0 评论 -
Elasticsearch7.x——High Level REST Client(二)Search/Sync Search APIs
目录7、Search APIs7.1、SearchSourceBuilder7.1.1、排序(SortBuilder)7.1.2、字段过滤7.1.3、高亮7.1.4、聚合7.1.5、Profile API7.2、QueryBuilder7.2.1、简单查询7.2.2、复合查询7.2.2.1、constant_score query——无关词频的查询7.2.2.2、bool query——逻辑组合查询7.2.2.3、dis_max query——分离最大化查询7.2.2.4、function_score qu原创 2023-10-25 00:07:27 · 351 阅读 · 0 评论 -
Elasticsearch7.x——High Level REST Client(一)Document API
目录High Level REST Client1、初始化客户端2、配置客户端3、Basic Auth认证4、请求方式4.1、同步请求4.2、异步请求5、设置请求体5.1、手动拼接5.2、XContentBuilder6、Document APIs6.1、Index API6.1.1、提供文档源6.1.2、可选参数6.1.3、响应(Inde Response)6.1.4、异常6.2、Get API6.2.1、可选参数6.2.2、响应(GetResponse)6.2.3、异常6.3、Get Source AP原创 2023-10-23 16:08:40 · 532 阅读 · 0 评论 -
Elasticsearch7.x——Low Level REST Client详解
它与所有的Elasticsearch版本兼容。RestClient实例可以通过RestClientBuilder类创建,通过RestClient 的 builder(HttpHost …RestClient类是线程安全的,理想情况下与使用它的应用程序具有相同的生命周期。当不再需要时关闭它是非常重要的,这样它所使用的所有资源以及底层http客户端实例及其线程都可以得到释放。一旦创建了RestClient,就可以调用performRequest或performRequestAsync方法来发送请求。原创 2023-10-22 14:48:55 · 598 阅读 · 0 评论 -
Elasticsearch7.x——Java 访问Rest API
Elasticsearch提供Rest API,所以可以直接直接使用 HTTP 请求,去操作 Es。HTTP 请求工具,可以使用 Java 自带的 HttpUrlConnection,也可以使用一些 HTTP 请求库,例如 HttpClient、OKHttp、Spring 中的 RestTemplate 都可以。在Java中,可以使用java.net包下的URLConnection类来发送HTTP请求。示例:访问_analyze接口。示例:访问_search接口。原创 2023-10-21 22:20:09 · 302 阅读 · 0 评论 -
Elasticsearch7.x——设置用户密码认证
在执行以上命令后,我们会收到弹出框提示。根据提示输入启用密码后,可以开始设置各种角色的密码,包括 elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user。浏览器直接访问http://127.0.0.1:9200,会出现输入用户名、密码的弹窗,输入elastic和123456后,才能看到elasticsearch信息;在以上命令中,elastic是要修改密码的用户名。原创 2023-10-21 01:05:46 · 4107 阅读 · 1 评论 -
Elasticsearch7.x——配置详解
当你想要在其他主机上形成一个有多个节点的集群时,你应该使用 discovery.seed_hosts 设置来提供一个集群中其他(符合主节点的条件的)节点的列表,并且可能是活动的和可连接的,以便启动 发现过程(discovery process)。默认情况下,节点包含以下所有类型: 符合主节点条件的节点(master-eligible)、数据节点(data)、预处理节点(ingest) 以及 机器学习(machine learning)(如果可用) 和 转换(transform)节点。原创 2023-10-20 23:44:24 · 2413 阅读 · 0 评论 -
Elasticsearch——Java API 概述
它与所有的Elasticsearch版本兼容。Elasticsearch在7.17版本之前使用的Java客户端是Java REST Client,从7.17版本开始Elastic官方将Java REST Client标记为弃用(deprecated),并推荐使用新版Java客户端Java API Client。Java API Client是一个用于与Elasticsearch服务器进行通信的Java客户端库,帮助开发人员与Elasticsearch服务器进行通信,开发人员可以更加轻松地开发和维护代码。原创 2023-10-20 16:29:32 · 221 阅读 · 0 评论 -
Elasticsearch7.x——分析器Analyzer与分析接口Analyze API详解
当内置分析器不能满足您的需求时,可以创建一个custom分析器。零个或多个字符过滤器一个 分析器零个或多个token过滤器。tokenizer:内置或定制的分词器:可选的内置或定制字符过滤器列表filter:可选的内置或定制token过滤器列表:在索引文本值数组时,Elasticsearch会在一个值的最后一个值和下一个值的第一个项之间插入假的“间隙”,以确保短语查询与不同数组元素的两个术语不匹配。原创 2023-10-20 02:03:43 · 852 阅读 · 0 评论 -
Elasticsearch7.x——Cluster API详解
数据节点对CPU、内存,IO要求较高,在优化的时候需要 监控数据节点的状态,当资源不够的时候,需要在集群中添加新的节 点。该 API 返回基本的索引 metric(度量)(分片数量,存储大小,内存使用)和关于当前集群(编号,角色,系统,jvm 版本,内存使用,cpu 和安装的插件)中节点的信息。在一个生产集群中,对这些节点的职责进行划分是十分 必要的。在Elasticsearch集群中,可以设置候选主节点、数据节点、索 引预处理节点、协调节点四种类的节点,各种类型的节点在集群中扮 演着不同的角色。原创 2023-10-19 14:13:20 · 210 阅读 · 0 评论 -
Elasticsearch7.x——Index Settings详解
索引级别的设置可以针对每个索引单独设置。原创 2023-10-18 22:42:52 · 640 阅读 · 0 评论 -
Elasticsearch7.x——Index API详解
目录Index API1、创建索引1.1、索引设置1.2、映射2、获取索引3、更新索引4、删除索引5、判断索引是否存在6、索引别名6.1、创建索引别名6.1.1、基于时间(time-based)的别名6.1.2、基于用户(user-based)的别名6.1.3、创建索引时添加别名6.2、删除索引别名6.3、获取索引别名6.3.1、获取当前集群下的所有别名6.3.2、获取所有索引中有指定别名的6.3.3、通配符匹配指定的索引别名6.4、检查索引别名是否存在6.5、更新索引别名6.5.1、添加别名6.5.2、移原创 2023-10-18 17:35:30 · 400 阅读 · 0 评论 -
Elasticsearch7.x——索引统计(_stats)详解
fielddata统计信息,fielddata主要用加快text字段排序与聚合的性能,存储词根与文档的映射关系存储在在内存,在内存中进行排序与聚合。get api 操作统计信息,报错missing统计。将es数据flush到磁盘的统计信息。request_cache统计信息。搜索统计信息,包括建议统计信息。索引操作信息(CRUD)统计。translog的统计信息。refresh统计信息。原创 2023-10-18 15:39:32 · 1407 阅读 · 0 评论 -
Elasticsearch7.x——乐观并发控制、refresh参数
Elasticsearch是分布式的,创建、更新或删除文档时,必须将 文档的新版本复制到集群中的其他节点。为了确保旧版本的文档不会覆盖新版本文档,对文档执行的每个 操作都由主分片分配一个序列号,序列号随着每个操作的增加而增 加,因此新操作的序列号肯定比旧操作的序列号更高。这保证了当该请求返回时,其更改对搜索可见,同时防止对被阻塞的请求使用未经检查的资源。这是通过设置索引API或删除API的if_seq_no和 if_primary_term参数来完成的。, 以 更改其存储的每个文档。原创 2023-10-17 13:34:13 · 359 阅读 · 0 评论 -
Elasticsearch7.x——Search API详解
搜索API(_search)允许用来执行搜索查询并返回匹配的结果。 可以使用简单查询字符串作为参数提供查询(URI形式),也可以使 用请求正文(body形式)。大多数搜索API都是支持多索引的, Explain API除外(用于调试性能)。所有搜索API都支持跨索引机制,并支持多索引语法。例如,搜 索twitter索引中的所有文档:还可以在多个索引中搜索具有特定标记的所有文档,例如当每个 用户有一个索引时:或者使用_all搜索所有可用索引:为了确保快速响应,如果一个或多个分片失败,搜索API将以部原创 2023-10-16 23:20:25 · 411 阅读 · 0 评论 -
Elasticsearch7.x——Rest API通用参数详解
下面的示例展示了一个搜索请求,该请求搜索过去三天内 logstash的数据,假设索引使用默认的logstash索引名称格式 logstash-yyyy.MM.dd。下表显示了日期数学索引名称的不同形式和解析后的最终索引 名称,是在当前时间为2024年3月22日中午,时区为UTC的情况下解 析的。需要指定距离(如地理距离查询中的距离参数)时,如果未指 定,则默认单位为m。说明:一般情况下,filter_path用来过滤不必要的元数据, _source用于过滤返回的字段,类似SELECT功能。原创 2023-10-16 00:33:53 · 558 阅读 · 0 评论 -
Elasticsearch7.x——Term vector API详解
Term和Field统计信息是不准确的,仅检索请求文档所在的分片 的信息,而删除的文档不考虑在内。词项向量(term vector)是有elasticsearch在index document的时候产生,其包含对document解析过程中产生的分词的一些信息,例如分词在字段值中的位置、开始和结束的字符位置、分词的元数据payloads等;此外,可以使用per_field_analyzer参数为不同的字段提供不同 的分析器,这对于以任何方式生成Term向量都很有用,特别是在使用 人工文档时。原创 2023-10-15 15:30:23 · 523 阅读 · 0 评论 -
Elasticsearch7.x——操作文档API详解
目录操作文档单文档API1、Index API1.1、自动创建索引(action.auto_create_index)1.2、强制创建(op_type)1.3、ID自动生成1.4、路由(routing)1.5、分发1.6、超时(time)1.7、等待活动分片1.8、detect——noop参数2、Get API2.1、实时性(realtime)2.2、字段选择(_source)2.3、存储字段(stored_fields)2.4、路由(routing)2.5、preference参数2.6、refresh参原创 2023-10-15 00:49:19 · 1034 阅读 · 0 评论 -
Elasticsearch7.x——Cat命令详解
人类的眼睛,尤其是在看终端时, 需要的是紧凑和对齐的文本。_cat/后不跟任何子节点,返回的结果是目录,也就是可用的 URL节点,这个功能是非常有用的,当忘记某个接口时可以先执行这 个接口。指定响应返回的数据格式:text(默认),json,yaml,smile,cbor。每个命令都接受一个查询字符串参数help,该参数将输出其可用 值。每个命令都接受一个查询字符串参数h,该参数只强制显示这些 列。(通过设置 Accept的HTTP头部的多媒体格式的优先级更高)显示正在进行和先前完成的索引碎片恢复的视图。原创 2023-10-14 16:28:59 · 1624 阅读 · 0 评论 -
Elasticsearch7.x——聚合详解
目录聚合1、Metric——度量值聚合1.1、avg——均值聚合1.1.1、使用脚本计算1.1.2、动态参数修正1.1.3、missing参数——指定缺省值1.2、min——最小值聚合1.3、max——最大值聚合1.4、sum——求和聚合1.5、cardinality——基数统计聚合1.5.1、precision_threshold参数1.6、stats——基本统计聚合1.7、extended_stats——扩展统计聚合1.8、percentiles——百分位统计1.9、percentile_rank——百原创 2023-10-13 22:02:40 · 340 阅读 · 0 评论 -
Elasticsearch7.x——搜索API详解
场景:例如想要搜索博客信息,搜索的关键字是java,但是我们希望能够将评分较高的博客优先展示出来。但是默认的评分策略是没有办法考虑到评分的,他只是考虑相关性,这个时候可以通过 function_score query 来实现。PUT /blog"title": {},"votes": {"title": "Java集合详解","title": "Java多线程详解,Java锁详解","query": {"match": {默认情况,votes为10的评分更高。原创 2023-10-12 16:41:31 · 761 阅读 · 0 评论 -
Elasticsearch7.x——映射、类型、映射参数详解
默认情况下,如果没有配置 search_analyzer,则查询时,首先查看有没有search_analyzer,有的话,就用 search_analyzer 来进行分词,如果没有,则看有没有 analyzer,如果有,则用 analyzer 来进行分词,否则使用 es 默认的分词器。Fielddata默认是不启用的,因为text字段比较长,一般只做关键字分词和搜索,很少拿它来进行全文匹配和聚合还有排序,因为大多数这种情况是无意义的,一旦启用将会把text都加载到内存中,那将带来很大的内存压力。原创 2023-10-10 23:47:08 · 521 阅读 · 0 评论 -
Elasticsearch7.x——中文分词器及扩展
由于闫团是一个比较小的地方,ik的字典中并不包含导致分成两个单个的字符;我们可以将它添加到ik的字典中;在ik的安装目录下config中新增my.dic文件,并将闫团放到文件中:完成之后修改IKAnalyzer.cfg.xml文件,添加新增的字典文件:< properties > < comment > IK Analyzer 扩展配置 </ comment > <!原创 2023-10-10 17:00:52 · 266 阅读 · 0 评论 -
Elasticsearch——元字段详解
自定义路由可以降低搜索压力。"query": {"match": {搜索请求仅在关联路由值user1和user2的分片上执行。当索引指定了自定义路由的文档时,不能保障所有分片中文档Id的唯一性。事实上,拥有相同Id的文档会根据不同的路由存储在不同的分片中,只能依靠用户来确保编码的唯一性。原创 2023-10-06 00:14:13 · 495 阅读 · 0 评论 -
Elasticsearch——索引监控及状态管理
其中,primaries仅包含主分片的值,total是主分片和从分片的累计值。在Elasticsearch中,系统提供了接口来监控索引的状态,包括索引的统计信息、碎片信息、恢复的状态和分片的信息,利用这些接口可以随时监控系统索引的状态。注意,当分片在集群中移动的时候,它们的统计数据会被清除,视作它们在其他节点中被创建。存储信息报告分片副本存在的节点、分片副本版本、指示分片副本最近的状态以及在开启分片索引时遭遇的任何异常。可以用来提供分片和索引的更多统计信息,可能是优化信息,删除的“垃圾”数据,等等。原创 2023-10-05 21:06:36 · 750 阅读 · 0 评论 -
Elasticsearch——索引配置、模板和重建详解
使用keyword分词器、lowercase分词过滤、字符过滤器是html strip,这3部分构成一个分词器。上面示例返回分词结果是this is a test,其中html_strip过滤掉了html字符。也可以指定索引进行分词。原创 2023-10-04 23:09:58 · 2254 阅读 · 1 评论 -
Lucene--倒排索引
Lucene倒排索引倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各个记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而成为倒排索引(inverted index)。带有倒排索引的文件我们成为倒排索引文件,简称倒排文件(inverted file)。倒排索引中的索引对象是文档或者文档集合中的单词等,用来存储这些单词...原创 2020-03-15 13:10:08 · 420 阅读 · 0 评论 -
Elasticsearch--配置说明
配置Elasticsearch配置文件在elasticsearch/config文件夹下。在这个文件夹中有两个文件,一个是Elasticsearch配置不同模块的配置文件elasticsearch.yml,另一个是Elasticsearch日志的配置文件logging.yml。默认配置文件为YML。Elasticsearch提供了多种方式进行设置,在系统内部,都使用命名空间来表示这些设置,根据...原创 2020-03-15 10:12:34 · 361 阅读 · 0 评论 -
SpringBoot--整合Elasticsearch
引入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven....原创 2020-03-15 00:10:48 · 193 阅读 · 0 评论 -
SpringData--Elasticsearch
引入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http...原创 2020-03-14 21:27:02 · 236 阅读 · 0 评论 -
Elasticsearch--动态映射
动态映射在Elasticsearch中可以不事先建好索引结构,在使用的时候可以直接插入文档到索引中,系统会根据文档的内容自动进行索引结构的动态映射,这样就极大地简化了索引的操作。自动检测添加新类型和字段,被称为动态映射。可以根据目的自定义动态映射的规则:_default_:用于创建新映射类型的基础映射动态字段映射:控制动态字段检测规则动态模板:自定义规则来匹配动态添加字段的映射禁用...原创 2020-03-13 15:31:09 · 613 阅读 · 0 评论 -
Elasticsearch--映射参数(二)
format参数在JSON格式文档中,日期用字符串表示。Elasticsearch利用一系列的预先设定的格式来识别和分析这些字符串,产生一个长整型数值,代表世界标准时间的毫秒数。除了内置的格式之外,也可以使用通俗的yyyy/MM/dd语法来指定自定义格式:PUT /myindex2{ "mappings": { "test2":{ "properties": { ...原创 2020-03-13 14:16:12 · 1050 阅读 · 1 评论 -
Elasticsearch--映射参数(一)
映射参数用于字段映射的参数,对部分或全部字段数据类型是通用的。映射参数对字段映射的特殊需求进行设置,比如设置字段的分词,字段的权重,是否被索引,日期的格式,等等,Elasticsearch的功能非常强大,光映射参数高达28个。analyzer参数可分词的字符串型字段的值通过一个分析器将字符串装换为一连串的索引词。每个查询、每个字段或每个索引都可以指定分析器。在创建索引时,Elasticse...原创 2020-03-12 23:24:56 · 827 阅读 · 1 评论 -
Elasticsearch--字段数据类型
字段数据类型Elasticsearch支持一系列不同的数据类型来定义文档字段,分为核心数据、复杂数据、地理数据、专门数据类型。核心数据:字符串数据类型:string数字型数据类型:long、integer、short、byte、double、float日期型数据类型:date布尔型数据类型:boolean二进制数据类型:binary复杂数据类型:数组数据类型:不需要专门的类...原创 2020-03-11 22:41:12 · 1760 阅读 · 0 评论 -
Elasticsearch--映射类型
映射类型每个索引拥有一个或多个映射类型,用来在索引中将文档分为不同的逻辑组。每个映射类型拥有:元字段:用来定义如何处理文档的元数据。元字段包括文档的_index字段、_type字段、_id字段和_source字段。字段或属性:每个映射类型包含与类型相关的字段或属性列表。同一索引中不同映射类型的相同名称字段必须拥有相同的映射。字段数据类型每个字段拥有一个数据类型,可以是简单数据类型,...原创 2020-03-11 19:49:37 · 673 阅读 · 0 评论 -
Elasticsearch--文档管理
增加文档在Elasticsearch中如果有相同ID的文档存在,则更新此文档示例:PUT /secisland/secilog/1{ "collect_type":"syslog", "collect_date":"2016-01-11T09:32:12", "message":"xxxxx"}返回:{ "_index": "secisland", "_type...原创 2020-03-11 15:39:54 · 298 阅读 · 0 评论 -
Elasticsearch--索引别名
索引别名在Elasticsearch所有的API中,对应的是一个或者多个索引。Elasticsearch可以对一个或者多个索引指定别名,通过别名可以查询到一个或者多个索引的内容。在内部,Elasticsearch会自动把别名映射到相应的索引上。可以对别名编写过滤器或者路由,在系统中别名**不能重复** ,也不能和索引名重复。示为索引secisland增加一个别名alias1POST /_a...原创 2020-03-11 09:55:24 · 786 阅读 · 0 评论 -
Elasticsearch--索引映射管理
映射(mapping)映射像关系数据库中的表结构,每一个索引都有一个映射,它定义了索引中的每一个字段类型,以及一个索引范围内的设置。一个映射可以事先被定义,或者在第一次存储文档的时候自动识别。增加映射API允许向索引(index)添加文档类型(type),或者向文档类型中添加字段(field)。PUT /secisland{ "mappings": { "log":{ ...原创 2020-03-11 00:15:52 · 346 阅读 · 0 评论 -
Elasticsearch--索引管理
创建索引创建索引的时候可以通过修改number_of_shards和number_of_replicas参数的数量来修改分片和副本的数量。再默认情况下分片的数量是5个,副本的数量是1个。例如:PUT /myindex/{ "settings": { "index": { "number_of_shards": 3, "number_of_replicas...原创 2020-03-10 18:42:44 · 226 阅读 · 0 评论