数据库(Elasticsearch)
文章平均质量分 84
打分几楼MOTO
这个作者很懒,什么都没留下…
展开
-
前缀 通配符 正则搜索
目录前缀搜索前缀搜索的原理通配符搜索正则搜索建议前缀搜索C3D0-KD345C3K5-DFG65C4I8-UI365C3 --> 上面这两个都搜索出来 --> 根据字符串的前缀去搜索PUT my_index{ "mappings": { "my_type": { "properties": { "title": { "type": "keyword" } }...原创 2022-05-04 17:22:41 · 239 阅读 · 0 评论 -
倒排索引介绍
目录图书和搜索引擎的类比正派索引和倒排索引倒排索引的核心组成图书和搜索引擎的类比 图书 正排索引 ==目录页 倒排索引 == 索引页 索引引擎 正排索引 ==文档ID到文档内容和单词的关联 倒排索引 ==单词到文档ID的关系 正派索引和倒排索引 正排索引 ==文档ID到文档内容和单词的关联 倒排索引 ==单词到文档ID的关系 DocumentId:Position == 文档id和该原创 2022-05-03 18:08:48 · 1073 阅读 · 0 评论 -
Elasticsearch数据类型--object
概念介绍es中的object类型可理解为field包含field即field的分层结构。 例如下面的index,在第一个层次包含了[region,manager]字段,manager内部又包含了[age,name],name本身又是一个object,包含了[first,last]。 这里需要注意的是,name使用了dynamic、enabled、properties、type属性。 其中,dyanmic表示此object是否可动态添加字段,当然也可以给当前索引整体设置dyanmic的值; .原创 2022-05-03 12:18:32 · 2117 阅读 · 0 评论 -
ElasticSearch数据建模实例
目录什么是数据建模数据建模: 功能需求 + 性能需求如何对字段进行建模字段类型 Text VS Keyword字段类型:结构化数据检索聚合及分析额外的存储一个数据建模的实例图书的索引优化字段设定Demo需求变更查询图书:解决字段过大引发的性能问题DemoMapping字段的相关设置一些相关的API什么是数据建模 数据建模,是创建数据模型的过程 数据建模是对真实世界进行抽象描述的一种工具和方法,实现对现实世界的映射.原创 2022-05-03 11:18:38 · 100 阅读 · 0 评论 -
基本概念以及基本使用
目录基本概念文档索引ES与传统关系型数据库的类比基本的APIBulk API批量读取 Mget批量查询msearch常见错误返回基本概念文档 ES是面向文档的,文档是所有可搜索数据的的最小单位 日志文件中的日志项 一个电影的具体信息/一张唱片的详细信息 MP3播放器里的一首歌/一篇PDF文档中的具体内容 文档会被序列化成JSON格式,保存在ES中 JSON对象由字段组成原创 2022-05-02 18:57:39 · 284 阅读 · 0 评论 -
剖析分布式查询及相关性算分
分布式搜索的运行机制ElasticSearch的搜索,会分两阶段进行 第一阶段---Query 第二阶段---Fetch Query --then --Fetch Query阶段 用户发出搜索请求到ES节点.节点收到请求后,会以Coordinating节点的身份,在6个主副分片中随机选择3个分片.发出查询请求 被选中的分片执行查询,进行排序.然后每个分片都会返回 From + Size 个排序后的文档ID和排序值给 Coordinating节点原创 2022-05-02 18:00:14 · 157 阅读 · 0 评论 -
分片及其生命周期
分片的内部原理 什么是ES的分片 ES中最小的工作单元/是一个Lucene的Index 一些问题 为什么ES的搜索是近实时的(1秒后被搜到) ES是如何保证断电时数据也不会丢失 为什么删除文档,并不会立即释放空间 倒排索引不可变性 倒排索引采用Immutable Design,一旦生成,不可更改 不可变形,带来了的好处如下: 无需考虑并发写文件的问题,避免了锁机制带来的性能问题 一旦原创 2022-05-02 17:49:31 · 264 阅读 · 0 评论 -
文档的分布式存储
目录文档存储在分片上文档到分片的路由算法更新一个文档的的流程删除一个文档的流程文档存储在分片上 文档会存储在具体的某个主分片和副本分片上:例如文档1,会存储在P0和R0分片上 文档到分片的映射算法 确保文档能够均匀分布在所用的分片上,充分利用硬件资源,避免部分机器空闲,部分机器繁忙 潜在的算法 随机/Round Robin.当查询文档1,分片数很多,需要多次查询才能查到文档1 维护文档到分片的映射关系,当文原创 2022-05-02 16:56:38 · 362 阅读 · 0 评论 -
搜索的相关性算分
相关性 -Relevance 搜索的相关性,描述了一个文档和查询语句匹配的程度,ES会对每个匹配查询条件的结果进行算分 打分的本质是排序,需要把最符合用户需求的文档排在前面.ES5之前,默认的相关性算分采用TF-IDF,现在采用BM25 "区块链"在文档1,2,3中出现 "的"在文档2,3,4,5..... "应用"在文档2,3,4...... 词频TF Term Frequency:检索词在一篇文章中出现的概率 检索词出现的次数除以文档的原创 2022-05-02 15:53:24 · 3917 阅读 · 0 评论 -
ES-ip类型的使用
"format": ["yyyy-MM-dd HH:mm:ss"]:增加文档的时候loginTime的格式必须严格按照yyyy-MM-dd HH:mm:ss,如果缺少,会报错误 索引名称必须小写#创建mappingPUT test_ipadd{ "mappings": { "numeric_detection": true, "date_detection": true, "properties": { "id":{ "type": "lo...原创 2022-05-01 19:13:46 · 648 阅读 · 0 评论 -
dis_max实现best_fields策略以及Tie Breaker优化
目录算分过程:best fields策略:dis_max最佳实现相关知识可以点击这里查看搜索title和body中包含brown 或者fox的文档期待结果是doc2,结果是doc1排在了doc2前面算分过程:计算每个document的relevance score:每个query的分数相加,乘以matched query数量,除以总query数量算一下doc1的分数{ "match": { "title": "brown fox" }},针对doc...原创 2022-04-23 23:46:40 · 294 阅读 · 0 评论 -
基于boost的细粒度搜索条件权重控制
需求:搜索标题中包含java的帖子,如果标题中包含hadoop或者elasticsearch就优先搜索出来,同时呢,如果一个帖子包含java hadoop,一个帖子包含java ealsticsearch,包含hadoop的帖子要比elasticsearch优先搜索出来知识点:搜索条件的权重,boost.可以将某个搜索条件的权重加大,此时如果当匹配这个搜索条件和另一个搜索条件的document,匹配权重更大的搜索条件的document,ralevance score会更高,当然就会优先搜索返回出来.原创 2022-04-23 23:20:35 · 1484 阅读 · 0 评论 -
手动控制全文检索结果的精确度
目录搜索内容中包含learning或者Hadoop的文档搜索标题中包含learning和Hadoop的bolg搜索标题中包含java,Hadoop,spark,elasticsearch,4个关键字中至少三个的bolg用bool组合多个搜索条件java,Hadoop,spark,elasticsearch,来搜索title使用should如何搜索java,Hadoop,spark,elasticsearch包含三个的bolgs总结相关知识可以点击这里查看全文检索:match原创 2022-04-23 22:39:46 · 1571 阅读 · 0 评论 -
filter执行原理深度剖析(bitset机制与caching机制)
在倒排索引中查找搜索串,获取document listword doc1 doc2 doc3 2017-01-01 * * 2017-01-02 * * 2017-01-03 * * * filter:2017-01-02 ====>到倒排索引中一找,发现2017-01-02对应的document list 为doc1doc...原创 2022-04-22 17:19:27 · 182 阅读 · 0 评论 -
Elasticsearch-数据建模最佳实践
目录建模建议(一):如何处理关联关系建模建议(二):Dynamic VS Strict一个例子:Cookie Server的数据解决方案: Nested Object & Key Value建模建议(三):避免正则查询解决方案:将字符串转换为对象建模建议(四):避免空值引起的聚合不准解决方法建模建议(五):为索引的 Mapping 加⼊ Meta 信息建模建议(一):如何处理关联关系优先考虑Denormalization 当数据包含多数值对.原创 2022-04-08 11:52:03 · 218 阅读 · 0 评论 -
Elasticsearch-Painless脚本应用
目录Painless简介Painless的用途通过Painless脚本访问字段案例1:script processor案例2:查看views计数案例3:保存脚本在Cluster State案例4:在search中应用脚本缓存Inline scripts VSStored ScriptsPainless简介 自ES5.x之后,专门为ES设计,扩展了Java语法 6.0开始,ES只支持PainLess PainLess支持所有Ja...原创 2022-04-06 18:11:59 · 2325 阅读 · 0 评论 -
Elasticsearch-IngestPipeline&PainlessScript
目录需求:修复与增强写入的数据Ingest NodePipeline & Processor使用Pileline切分字符串为ES增加一个Pipeline使用Pipeline更新数据一些内置的ProcessorsIngest Node VS Logstash需求:修复与增强写入的数据Tags字段中,逗号分隔的文本应该是数组,而不是一个字符串 需求:后期需要对Tags进行Aggregaion统计(需要对tags进行切分按照切分后的结果进行分组) ..原创 2022-04-06 16:06:58 · 1459 阅读 · 0 评论 -
Elasticsearch-文档的父子关系
目录Parent/Child父子关系定义父子关系的几个步骤设置索引的Mapping索引父文档索引子文档按需查询文档嵌套对象VS父子文档Parent/Child 对象和Nested对象的局限性 每次更新,需要更新索引整个对象(包括根对象和嵌套对象) ES提供了类似关系型数据库中Join的实现,使用Join数据类型实现,可以通过维护Parent和Child的关系,从而分离两个对象 父文档和子文档是两个独立的文档 更原创 2022-04-05 18:52:52 · 694 阅读 · 0 评论 -
Elasticsearch-对象及Nest对象
目录ES中处理关联关系案例1:博客和其作者关系包含对象数组的文档Nested Data Type嵌套查询嵌套对象的聚合查询ES中处理关联关系 关系型数据库,一般会考虑Normalize数据,在ES中,往往考虑Denormalize数据 Denormalize的好处是:读的速度快/无需表连接/无需行锁 ES并不擅长处理关联关系,我们一般采用以下四种方法处理关联 对象类型 嵌套对象 父子关联关系 ...原创 2022-04-05 17:48:24 · 584 阅读 · 0 评论 -
Elasticsearch-聚合分析的原理及精准度问题
目录分布式系统的近似统计算法Min聚合分析的执行流程Terms AggregationTerm 聚合的分析流程Terms不正确的案例解决Terms不准的问题: 提升shard_size的参数打开show_term_doc_count_error分布式系统的近似统计算法 数据量很大且精准度要求高:Hadoop离线计算 精确度要求高且实时性要求高且有限数据计算时:ES可以满足要求 数据量很大且实时性要求高采用近似计算牺牲精准度 Min聚合原创 2022-04-05 16:59:49 · 549 阅读 · 0 评论 -
Elasticsearch-聚合的作用范围与排序
目录聚合的作用范围Query作用范围FilterPost Filterglobal排序聚合的作用范围 ES聚合分析的默认作用范围是query的查询结果集 同时ES还支持以下方式改变聚合的作用范围 Filter Post Filter Global #创建mappingPUT /employees/{ "mappings" : { "properties" : { ...原创 2022-04-05 16:18:14 · 628 阅读 · 0 评论 -
Elasticsearch-Pipeline Aggregation
管道概念:支持对聚合分析的结果进行再次聚合分词 Pipeline的分析结果会输出到原结果中,根据位置的不同,分为两类 Sibling --结果和现有分析结果同级 mac,min,avg & sum Bucket Stats,Extended Status Bucket Percentiles Bucket POST /employees/_search{ "size":0, "aggs"...原创 2022-04-05 11:55:19 · 255 阅读 · 0 评论 -
Elasticsearch-From,Size,SearchAfter&ScrollAPI
目录From/Size分布式系统中深度分页的问题Search After 避免深度分页的问题Search After是如何解决深度分页的问题Scroll API不同的搜索类型和使用场景From/Size 默认情况下,查询按照相关度算分排序,返回前10条记录 容易理解的分页方案 From: 开始位置 Size:期望获取文档的总数 分布式系统中深度分页的问题 ES天生就是分布式的.查询信息,但是数据分别保存在多个分原创 2022-04-05 05:52:35 · 273 阅读 · 0 评论 -
Elasticsearch-排序及DocValues&&FieldData
目录排序排序过程Doc Values VS Field Data关闭 Doc Values排序 ES默认采用相关性算分对结果进行降序升序 可以通过设定sorting参数,自行设定排序 如果不指定_score,算分为null "order_data":排序字段;"order":排序的方 对类型为text的字段排序只有当fielddate设为tue时才可以对类型为text的字段进行排序排序过程 排序是针对字段原始.原创 2022-04-05 05:24:43 · 306 阅读 · 0 评论 -
Elasticsearch-UpdateByQuery&ReindexAPI
使用场景 一般情况下,我们需要重建索引 索引的mappings发生变更,字段类型更改,分词器及字典更新 索引的Settings发生变更:索引的主分片数发生改变 集群内,集群间做数据迁移 ES的内置提供的API Update By Query:在现有索引上重建 Reindex:在其他索引上重建索引 Update By Query案例1:为索引增加子字段案例2:Reindex...原创 2022-04-05 21:35:28 · 265 阅读 · 0 评论 -
Elasticsearch-Suggest API
目录什么是搜索建议Elasticsearch Suggester APITerm SuggesterPhrase SuggesterThe Complete Suggester使用Completion Suggester的一些步骤Context Suggester实现Context Suggester精准度和召回率什么是搜索建议 现代的搜索引擎,一般会提供一个Suggest as you type 功能 帮助用户在输入搜索的工程中,进行自动补.原创 2022-04-05 04:45:15 · 336 阅读 · 0 评论 -
Elasticsearch- Function Score Query
目录算分与排序Function Score QueryDemo按受欢迎度提升权重使用Modifier平滑曲线引入FactorBoost Mode和Max Boost一致性随机函数算分与排序 ES默认会以文档的相关度算分进行排序 可以通过指定一个或者多个字段进行排序 使用相关度算分排序,不能满足某些特性条件 无法针对相关度,对排序实现更多的控制 Function Score QueryFunction Sco...原创 2022-04-04 23:30:58 · 379 阅读 · 0 评论 -
Search Template和index Alias
Search TemplateES的查询语句 对相关性/查询性能都至关重要 在开发初期,虽然可以明确查询参数,但是往往还不能最终定义查询的DSL的具体结果 通过Search Template定义一个Contracy 各司其职,解耦 开发人员/搜索工程师/性能工程师 index Alias为索引定一个别名,通过别名读写数据,也可以在创建别名时做一些操作,通过别名搜索数据时,该操作会发生作用POST _aliases{ "actions": [ {...原创 2022-04-04 22:47:34 · 357 阅读 · 0 评论 -
Elasticsearch-单字符串多字段查询
目录单字符串查询实例bool查询should的算分过程Disjunction Max Query查询通过Tie Breaker参数调整MultiMatch Query查询三种场景MultiMatch Query语法使用多数字段匹配解决跨字段搜索(一个地址信息映射到不同的字段上:街道,城市,国家......)单字符串查询实例PUT /blogs/_bulk{"index":{"_id":1}}{"title":"Qucik brown rabbit...原创 2022-04-04 21:05:19 · 1210 阅读 · 0 评论 -
Elasticsearch-Query&Filtering与多字段串多字段查询
目录Query Context && Filter Context条件组合bool查询语法利用bool查询解决结构化查询---包含而不是相等的条件(问题可以点击这里查看)bool支持嵌套查询语句的结构会对相关度算分产生影响控制字段的Bootsting本节知识点回顾Query Context && Filter Context 高级搜索的功能:支持多项文本输入,针对多个字段进行搜索 搜索引擎一般也提供基于时间,价格..原创 2022-04-04 14:56:22 · 461 阅读 · 0 评论 -
Elasticsearch-结构化搜索
目录结构化数据ES中的结构化搜索Demo本节知识点回顾结构化数据 结构化搜索,是指对结构化数据的搜索 日期,布尔类型和数字都是结构化的 文本也可以是结构化的 如彩色表可以有离散的颜色集合:红,绿,蓝 一个博客可能贴了标签,例如:分布式和搜索 电商网站上的商品都有UPCs(通过产品码)或其他的唯一标识,他们都需要遵守颜色的,结构化的格式 ES中的结构化搜索 布尔,时间,日期和数字这类结构化的数据.原创 2022-04-04 13:37:20 · 289 阅读 · 0 评论 -
Elasticsearch-基于term和基于全文查询
目录基于Term查询基本概念Demo复合查询 -Constant Score 转为Filter基于全文查询基本介绍Match Query 查询过程本节知识回顾基于Term查询基本概念 Term的重要性 Term是表达语意的最小单位,搜索和利用统计语言模型进行自然语言处理都需要Term 特点 Term Level Query: Term Query / Range Query / Exists Query / Prefix原创 2022-04-04 01:04:25 · 247 阅读 · 0 评论 -
Elasticsearch-Search API
目录指定查询的索引SearchAPI分为两类URI SearchQuery String Syntax(了解即可)Request Body Search(重点掌握)分页排序_source filtering查询表达式-matchQueryString & SimpleQueryString搜索Response搜索的相关性Relevance衡量相关性Precision & Recall指定查询的索引/_search 集...原创 2022-04-03 23:56:33 · 245 阅读 · 0 评论 -
Elasticsearch-聚合(Aggregation)
目录什么是聚合(Aggregation)聚合的分类Bucket && MetricBucketMetricDemo什么是聚合(Aggregation) ES除了搜索功能以外,提供的针对ES数据进行统计分析的功能 实时性高 Hadoop(T+1) 通过聚合,我们会得到一个数据的概述,是分析和总结全套的数据,而不是寻找单个文档 某个地方的客房数量 不同的价格区间,可预订的经济型酒店和五星级酒原创 2022-04-02 23:03:39 · 402 阅读 · 0 评论 -
Elasticsearch-Mapping以及Template
原创 2022-04-02 17:56:09 · 1361 阅读 · 0 评论 -
Elasticsearch-分词器
目录Analysis与AnalyzerAnalyzer的组成_analyzer APIStandard AnalyzerSimple AnalyzerStop AnalyzerWhiteSpace AnalyzerKeyword AnalyzerPattern AnalyzerLanguageAnalyzer中文分词ICU Analyzer更多的中文分词器DemoAnalysis与Analyzer Analysis ==...原创 2022-05-01 11:57:43 · 1114 阅读 · 0 评论 -
Elasticsearch(四) -- 聚合查询(Bucket)
说明:该博客对应的Elasticsearch 的版本为7.8.0;测试工具为postman概念:Bucket可以理解为一个桶,符合要求的放入一个桶中,相当于mysql中的groupBy本篇博客主要针对于terms aggs, filter aggs,histogram aggs,range aggs,date aggs五个关键字展开.一,创建索引数据,参考Elasticsearch(三)--Metric(指标)Aggregation语法Aggregation是search的一部分,一原创 2021-08-01 21:37:22 · 2144 阅读 · 1 评论 -
Elasticsearch(三)--Metric(指标)
1,概念理解四个关键字:Metric(指标),Bucketing(桶),Matrix(矩阵),Pipeline(管道).其中Metric(指标),Bucketing(桶)应用最为广泛.文档也就是json对象Bucket(桶): 满足特定条件的文档的集合,类似SQL中的GROUP BY语法(按照性别进行分组)Metric(指标): 指标分析类型对桶内的文档进行聚合分析的操作),如计算最大值、最小值、平均值等等(类似于分组后计算组内的最大值与最小值)ES聚合分析查询的一般写法"agg...原创 2021-08-01 09:15:55 · 1435 阅读 · 0 评论 -
Elasticsearch(一)--基本的操作和介绍
说明:该博客对应的Elasticsearch 的版本为7.8.0;测试工具为postman1.数据格式Elasticsearch是面向文档型数据库一条数据就是一个文档,将Elasticsearch里存储文档数据和关系型数据库mysql存储做一个对比.ES 里的 Index 可以看做一个库,而 Types 相当于表,Documents 则相当于表的行。 这里 Types 的概念已经被逐渐弱化,Elasticsearch 6.X 中,一个 index 下已经只能包含一个 type..原创 2021-08-01 01:13:25 · 209 阅读 · 0 评论