首页
学习
活动
专区
圈层
工具
发布

后端技术杂谈4:Elasticsearch与solr入门实践

Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。 本文从零开始,讲解如何使用 Elastic 搭建自己的全文搜索引擎。.../lucene/solr/6.2.0/solr-6.2.0.tgz' tar xvf solr-6.2.0.tgz cd solr-6.2.0 目录结构如下: ?...Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理。...可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。 这么多的功能被集成到一台服务器上,你可以轻松地通过客户端或者任何你喜欢的程序语言与ES的RESTful API进行交流。...Solr采用了 Lucene Java 搜索库为核心的全文索引和搜索,并具有类似REST的HTTP/XML和JSON的API。

1.6K10

ES的一知半解

类似Lucene这样的检索工具,主要过程包括获取内容,构建文档,分析文档和索引文件。...IndexWriter 用来添加、删除和更新lucene里面的索引文档。这些操作是在内存中完成以保证更好的性能,但是保证这些操作的持久化,这些操作是需要flush到磁盘的。...Lucene 索引被分解为很多段(segments)。每个索引段实际上是一个功能完整的lucene索引,一旦一个索引段创建完成,它将是不可变的,并且不能删除段里面的索引文档。...每个节点上启动多个实例,每个实例配置IO,CPU,MEMORY和DISK QUOTA等。Master节点。根据一定的策略把实例分配给一个租户。对用户的可视化呈现同样如此。...一旦Primary出现故障,无法通过简单的Truncate机制将各副本的数据恢复到一致状态。 这时,可以考虑快照抓取和lease机制。

1.8K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0

    作者:余枫 1 文档编写目的 Fayson在前面的文章中详细介绍过CDH的升级,参考《如何升级Cloudera Manager和CDH》,对于小版本的滚动升级,也有专门的一篇文章介绍,参考《0284-CDH...开始升级之前,你需要做好一些前置条件准备以及关键数据备份,这篇文档在讲述升级步骤时也会说明。...升级之前,需要查阅Clouder官网对相关版本的发行说明(release notes),了解API更改,不推荐的功能,新的功能以及不兼容的更改。...12.最终化元数据升级 在进行最终化元数据升级之前,要观察几天甚至几周的时间,观察集群的运行是否正常,在发现所有的任务都没有任何异常后,再进行最终化元数据升级操作。...一旦进行升级操作后,就无法再进行回滚,除非有数据备份。执行升级操作如下: ? ? 4.3 功能验证 1.运行MapReduce作业 ? ? ? 2.Hive测试 ?

    2.2K31

    深入搜索引擎之 Elasticsearch 必知必会(一):开发视角

    分两种情况 新增字段 Dynamic=true 时,有新增字段的文档写入,Mapping 会被修改 Dynamic=false 时,有新增字段的文档写入,Mapping 不会被修改;新增字段的文档无法被索引...相比单机的 Lucene,分布式架构的好处主要有 可扩展,方便水平扩容,无论是数据维度还是计算资源维度 高可用性,部分节点挂了,集群还能提供服务 节点(Node) 节点就是一个 ES 的实例,本质上就是一个...结构化搜索(Structured search)是指对结构化数据的搜索 结构化数据顾名思义也就是遵循严格定义的结构的数据 时间、日期、数字这类有精确格式的数据,可以对这类数据进行逻辑操作,如判断范围、...包含同义词 拼写错误或同音异形词 混合多语言的挑战 词干提取:如以色列文档,包含了希伯来语,阿拉伯语,俄语和英语 不正确的文档频率:如英语为主的文档中,德语得分高(稀有) 需要判断用户搜索时使用的语言,...After API ES 的并发控制 在并发更新文档的场景下,ES 是采用乐观锁版本号的方式来实现并发控制 如前文所述,ES 的文档其实是不可变的,所以对文档的更新,其实就是先标记原文档被删除,然后创建一个新文档

    1.6K20

    内存吞金兽(Elasticsearch)的那些事儿 -- 认识一下

    API。...它可以被下面这样准确的形容: 一个分布式的实时文档存储,每个字段 可以被索引与搜索 一个分布式实时分析搜索引擎 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据 Elasticsearch...面向文档 Elasticsearch 是 面向文档 的,意味着它存储整个对象或 文档。Elasticsearch 不仅存储文档,而且 索引 每个文档的内容,使之可以被检索。...) cluster:一组拥有共同的 cluster name 的节点 node:集群中的一个 实例 primary shard: 索引的子集,索引可以切分成多个分片,分布在不同的节点,分片对应的是lucene...如果端口没有打开,节点将无法形成一个集群。 客户端作为节点必须和 Elasticsearch 有相同的 主要 版本;否则,它们之间将无法互相理解。

    1.4K10

    【搜索引擎】提高 Solr 性能

    语境 在过去的 10 个月里,我很高兴与个性化和相关性团队合作。我们负责根据排名和机器学习向用户提供“个性化和相关的内容”。...以下是我们遇到的一些问题: 高比例的副本进入恢复并且需要很长时间才能恢复 副本中的错误无法到达领导者,因为它们太忙了 领导者承受过多的负载(来自索引、查询和副本同步),这导致它们无法正常运行并导致分片崩溃...Lucene 是所有计算背后的引擎,并为排名和 Faceting 创造了魔力。是否可以对 Lucene 进行数学运算并检查设置?...我可以根据大量文档和论坛阅读资料分享一个近似结果,但是它的配置不如 Solr 的数学那么重。 调整 Lucene 是可能的,前提是您愿意牺牲文档的结构。真的值得努力吗?...外部服务结果 其中一项访问 Solr 的服务在 New Relic 中的响应时间和错误率显着下降。

    1K10

    ElasticSearch2.32.4升级到ElasticSearch5.0

    该版本基于Lucene 6.2.0,已经在Elastic Cloud上完成了部署。据称,这是迄今为止最快、最安全、最易用的版本。...新数据结构:Lucene 6带来了一个新的Points 数据结构K-D树,用于存储数值型和地理位置字段,彻底改变了数值型值的索引和搜索方式。...此外,还有其他的一些改进,例如,rollover和shrink API启用了一种新的模式来管理基于时间的索引,引入新的cluster-allocation-explain API,简化索引创建。...如果是从更早的Elasticsearch版本向最新的5.0版本迁移,则请查阅升级文档。...解决方法: 目前我注释了,这个应该是语法错误,后续再查官网  #script.inline: true  #script.indexed: true 问题五, max file descriptors

    1.1K20

    0671-6.2.0-如何将CDH5.12的Hive元数据迁移到CDH6.2

    作者:余枫 1 文档编写目的 这里我们假定一个场景,你需要迁移CDH5.12到CDH6.2,CDH5.12和CDH6.2分别是两个不同的集群,我们的工作主要是HDFS数据和各种元数据从CDH5.12迁移到...文档参考: https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_ig_hive_schema_tool.html 4...2.在升级和更新完Hive元数据后,Hive服务出现了错误,在文档中贴出的日志中可以看到是TBLS表中缺少了一个字段,这可能是由于升级过程中该表的结构未成功升级导致的,在TBLS表中添加上缺少的OWN_TYPE...元数据成功迁移到CDH6.2以后,我们知道Hive元数据中保存的表的比如location信息其实对应的还是CDH5.12中的HDFS路径,这样会导致你虽然迁移成功了Hive元数据,但是在CDH6.2中依旧无法访问...4.本文档中只迁移了Hive的元数据,模拟迁移HDFS数据到同样的目录,这样的迁移方式,迁移之后表的数据以及数据目录都与之前一样,在验证后也可以看到,表的数据也没有发生缺失。

    1.9K30

    【ES三周年】关于 Elasticsearch 搜索引擎的介绍

    Elasticsearch 是一个基于 Apache Lucene 的全文搜索和分析引擎。...Elasticsearch 使得对来自多个来源的数据执行数据聚合操作以及对存储的数据执行模糊搜索等非结构化查询变得更加容易。它以类似文档的格式存储数据,类似于 MongoDB 的做法。...Elasticsearch 实例的一台机器的功能。...这个概念来自 Lucene 库(记住上面的 Apache Lucene)。该索引类似于书背面的术语,显示书中每个重要术语可能出现或讨论的页数。...万一其中一个节点出现故障或此时无法利用其资源,则始终可以使用具有数据的副本来处理数据。默认情况下,为每个分片创建一个副本,数量是可配置的。除了故障转移,副本的使用也提高了搜索性能。

    1.5K154

    后端工程师面试---ES深入讲解

    一、ES背景与概念 1.1 ES背景 Elasticsearch由Shay Banon在2010年创建,它基于Lucene开发,但提供了RESTful API风格的接口,支持分布式和水平扩展。...分片(Shard):索引中的数据被切分为多个分片,每个分片是一个Lucene实例,可以分布在不同的节点上。分片分为主分片和副本分片,主分片负责数据的读写,副本分片提供数据冗余和读请求服务。...Elasticsearch通过封装Lucene的复杂性,提供了简单易用的RESTful API接口。 6.2.1 倒排索引 倒排索引是Elasticsearch快速搜索的关键。...在更新文档时,Elasticsearch会先读取文档的当前版本,然后尝试写入新版本。如果文档在读取和写入之间被其他请求修改过,则更新操作会失败,并返回冲突错误。...缺点: 分词效果简单,可能无法满足复杂需求。 不进行小写化、去除标点符号等处理,可能影响搜索结果。 7.2.3 空白分词器 优点: 分词规则简单明了,易于理解。

    82110

    ElasticSearch学习笔记1

    (字符串扫描)如果有个字段是书籍描述,有个上千、上万字,那这个是时候进行字符串扫描可以说是非常慢, (分词)另外,如果输入 ** 连续性程 **,如果是字符串匹配我们无法搜索出 ** 连续性方程 **...我们用 java 开发的时候,可以引用 Lucene 包,调用 Lucene 提供的 api,完成索引和数据管理功能。...什么是 ElasticSearch ElasticSearch 就是基于 Lucene 提供了更高一级别的抽象,es 管理了好多的 Lucene,每个 Lucene 都是一个实例,es 提供了集群功能,...es 中的最小数据单元,每个文档都可以用一个 json 对象来表述,每个文档对象都有 field,每个 field 都是一个数据字段 一个例子: book document { "book_id...每个 shard 都是一个 Lucene 实例。

    50520

    从入门到实战学习ES

    一、ES背景与概念1.1 ES背景Elasticsearch由Shay Banon在2010年创建,它基于Lucene开发,但提供了RESTful API风格的接口,支持分布式和水平扩展。...分片(Shard):索引中的数据被切分为多个分片,每个分片是一个Lucene实例,可以分布在不同的节点上。分片分为主分片和副本分片,主分片负责数据的读写,副本分片提供数据冗余和读请求服务。...Elasticsearch通过封装Lucene的复杂性,提供了简单易用的RESTful API接口。6.2.1 倒排索引倒排索引是Elasticsearch快速搜索的关键。...在更新文档时,Elasticsearch会先读取文档的当前版本,然后尝试写入新版本。如果文档在读取和写入之间被其他请求修改过,则更新操作会失败,并返回冲突错误。...缺点:分词效果简单,可能无法满足复杂需求。不进行小写化、去除标点符号等处理,可能影响搜索结果。7.2.3 空白分词器优点:分词规则简单明了,易于理解。缺点:分词效果不佳,可能产生大量无意义的词项。

    1.4K32

    Elasticsearch 数据写入原理 | 原创不易

    无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库,并通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。...Elasticsearch 不仅仅是 Lucene 和全文搜索,我们还能这样去描述它: 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎 可以扩展到上百台服务器,处理 PB 级结构化或非结构化数据...ES 基于底层这些包,然后进行了扩展,提供了更多的更丰富的查询语句,并且通过 RESTful API 可以更方便地与底层交互。类似 ES 还有 Solr 也是基于 Lucene 实现的。...三、新文档写入流程 3.1 数据模型 如图 一个 ES Index (索引,比如商品搜索索引、订单搜索索引)集群下,有多个 Node (节点)组成。每个节点就是 ES 的实例。...先会存在内存的 bugger 中,然后持久化到 segment 。

    80840

    搜索 ES 数据写入原理

    无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库,并通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。...Elasticsearch 不仅仅是 Lucene 和全文搜索,我们还能这样去描述它: 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎 可以扩展到上百台服务器,处理 PB 级结构化或非结构化数据...ES 基于底层这些包,然后进行了扩展,提供了更多的更丰富的查询语句,并且通过 RESTful API 可以更方便地与底层交互。类似 ES 还有 Solr 也是基于 Lucene 实现的。...三、新文档写入流程 3.1 数据模型 如图 一个 ES Index (索引,比如商品搜索索引、订单搜索索引)集群下,有多个 Node (节点)组成。每个节点就是 ES 的实例。...先会存在内存的 bugger 中,然后持久化到 segment 。

    74230

    【ES三周年】Elasticsearch原理深入浅出 — RESTful 倒排索引 BKD树

    } // 编辑 DELETE /user/{id} // 删除实例,图片图片图片其实这就是一种潜移默化的 API 设计风格,看了下知乎和腾讯云社区 API 都有 RESTful 的倾向。...但 RESTful API 不适用于复杂请求逻辑,需选择性使用。二、Inverted Index/ Lucene Finite State Transducers1....Inverted Index倒排索引常规的索引是文档到关键词的映射:文档 ——> 关键词但这样检索关键词的时候很费力,要遍历文档。于是有了倒排索引。...实际应用中,还会考虑单词大小写、同义词、拼写错误等问题。而这些是普通关系数据库很难做到的。图片2....这个数据结构被 Lucene6.0 之后版本用于索引多维数值类型的数据,具体代码可以查看 org.apache.lucene.util.bkd (Lucene 7.1.0 API)该论文的实验结果表明,

    3.7K21

    You know, for search--带你认识Elasticsearch

    对于结构化数据,可以存储在DB中通过精确匹配找到。但是对于非结构化数据,一般查询时只能提供查询的局部信息或模糊信息,传统数据库无法根据这些信息进行查询(或者说效率很差)。...实例,可以独立进行存储和搜索。...用户还可以手动调用_forcemerge API来主动触发merge,以减少集群的segment个数和清理已删除或更新的文档。...2.2.4 部分更新 lucene支持对文档的整体更新,ES为了支持局部更新,在Lucene的Store索引中存储了一个_source字段,该字段的key值是文档ID, 内容是文档的原文。...当进行更新操作时先从_source中获取原文,与更新部分合并后,再调用lucene API进行全量更新, 对于写入了ES但是还没有refresh的文档,可以从translog中获取。

    3.4K51
    领券