索引

ElasticSearch如何修改索引字段

蓝咒 提交于 2020-03-31 11:00:27
一、需求 当es字段类型无法支撑业务需求,需要修改到字段类型的时候。例如修改字段类型从Integer变成double,这种情况下,是没办法修改es的字段的type的。 原因是一个字段的类型进行修改之后,ES会重新建立对这个字段的索引信息,ElasticsSearch的底层是Lucene库,字段类型修改会涉及到分词方式,相关度,TF/IDF等倒排的生成 , 所以是没办法修改的了。 这种情况下,如何能兼容旧数据的同时,实现修改字段类型? 二、如何实现:es的reindex 实现原理:通过es的reindex功能把旧索引的数据reindex到新索引,然后为新索引建立旧索引的别名,最后删除旧索引。 下面以重构: idt-shelf-2265-index-202003 下的 shelf_sub_job 中的Integer字段变为double为例子 新建一个索引: idt-shelf-2265-index-202003-temp (注:该索引下的数据表type和原索引保持一致。其中,新索引中的字段属性已修改为double) 执行reindex操作,把旧索引的数据复制到新索引: POST _reindex { "source": { "index": "idt-shelf-2265-index-202003" }, "dest": { "index": "idt-shelf-2265-index

常见elasticsearch问题处理方法

亡梦爱人 提交于 2020-03-31 10:27:54
1、集群状态查看 通过这两个界面可以看出 1.1如果heap红色,会导致界面查询比较慢. 通常是打开了比较多的索引, 可以在企业版的日志策略中打开自动关闭索 引的功能, 通常是打开7天的索引, 可以根据具体内存情况多打开几天,比如10天或者15天, 不能太多. 1.2.如果cpu和load红色, 会导致界面查询慢, 写入也慢, 对采集器的影响尤其明显, 采集器的日志中会出现超时或者bulk reject错误. 可能原因如下: a)当天或当前正在大量写入的event索引的分片分布不均,某个节点上分布了比较多的分片,导致该节点压力很大 b)磁盘写入速度太低 c)分片在恢复或者rebalance d)cpu核数少 e)主机上同时部署了其他消耗cpu资源较多的应用 1.3.如果磁盘使用率达到85%可能导致, 索引分片不能分配到此节点, 导致其他节点压力变大, 集群性能下降 1.4.可以看出节点列表是否缺少节点, 如果少节点, 可能存在下面两种情况: a)节点进程死掉, 没启动成功 b)集群发生脑裂, 一个大集群变成了多个小集群 5.节点列表里面实心星号的节点是当前的master节点, 需要看ES日志时首先看此节点的日志, 不能发现问题再看其他节点的日志. 2、查看集群参数配置 curl http://localhost:9200/_cluster/settings?pretty

找不到文件或程序集名称“xxx”,或找不到它的一个依赖项--解决办法

不打扰是莪最后的温柔 提交于 2020-03-31 09:34:35
问题可能原因1: 程序bin目录不在网站或虚拟目录根目录下,或所在虚拟目录建立时没有设置为“运行脚本”。 解决办法:bin移到网站/虚拟目录根目录或重建可运行脚本的虚拟目录/网站 问题可能原因2: 如果 提示为 找不到文件或程序集名称“URLRewriter”,或找不到它的一个依赖项。 则应当给目录 C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/ aspnet用户所有权限 问题可能原因3: 其中最常见的原因是Indexing service服务引起的。解决方法就是停用Indexing service,或配置ASP.net 的临时目录不受Indexing service服务的影响。 配置ASP.net 的临时目录不受Indexing service服务的影响的步骤如下: 1、开始 -- 管理工具 -- 计算机管理(Win2003的位置,其他操作系统类似)打开计算机管理 2、展开计算机管理左边树中“服务和应用程序”节点,再在其下展开“索引服务”节点,再在其下展开“System”节点,再在其下展开“目录”节点。 3、在计算机管理的右边我们可以看到配置的索引服务目录。 4、在“目录”节点上右击鼠标,选择“新建”--“目录” 5、在“添加目录”对话框中,路经输入框中输入 ASP.net 的临时文件目录

搜索引擎学习

半腔热情 提交于 2020-03-31 07:47:12
发展的里程碑:   第一阶段:该搜索引擎以“雅虎”为代表,主要依靠于人工分拣的分类目录进行搜索   第二阶段:该搜索引擎以Google为代表,主要依靠于机器抓取和采用链接分析技术进行搜索。与第一阶段的搜索引擎相比,其信息量大、更新及时,返回信息丰富。   第三阶段:该搜索引擎以“综合信息搜索服务”为代表,主要在第二阶段的基础上加入了智能化、人机交互、自动分类技术、中文内容分析等技术,不仅提高了信息检索速度和更新频率,而且还实现了拼音纠错、模糊查询、语音查询等功能 搜索引擎按照实现的方式分类: 全文搜索引擎:一般通过网络机器人或网络蜘蛛工具,自动分析网络上的各种连链接并将分析结果按规则整理,并同时存入数据库供显示使用 分类目录搜索引擎:通过人工的方式收集整理网站资料形成数据库 在计算机上表示信息获取流程,具体包括:信息的表示、信息存储、信息组织和信息访问 首先需要创建进行检索的数据,用其构建文本数据库 创建好文本数据库后,就需要建立文档的索引。Lucene全文搜索组件中是通过倒排索引的方法创建索引 创建好索引后,就可以进行检索。用户首先需要给出一个查询,该查询将被分析、然后利用文本处理技术进行处理 最后根据用户的查询将会获取一些文档,即检索结果。在把检索结果反馈给用户之前,还可以对检索结果按照一定的次序排序,以符合用户需要的文档能够排在更前面 查询方法 顺序查询法:当用户进行查询时

了解搜索引擎技术

元气小坏坏 提交于 2020-03-31 07:39:10
此文纯理论知识,很不错的搜索引擎的资料。 搜索引擎的定义 搜索引擎是传统IR技术在Web环境中的应用。一般来说,搜索引擎是一种用于帮助用户在Internet上查询信息的搜索工具,它以一定的策略在Internet中搜索,发现信息,对信息进行理解,提取,组织和处理,并为用户提供检索服务,从而起到信息导航的目的。 搜索引擎的体系结构 典型的搜索引擎结构一般由以下三个模块组成:信息采集模块(Crawler),索引模块(Indexer),查询模块(Searcher)。 Crawler :从web中采集网页数据 Indexer :对Crawler采集数据进行分析生成索引。 Searcher :接受查询请求,通过一定的查询算法获取查询结果,返回给用户。 -->Crawler Crawler 负责页面信息的采集,工作实现基于以下思想:既然所有网页都可能链接到其他网站,那么从一个网站开始,跟踪所有网页上的所有链接,就有可能检索整个互联 网。Crawler首先从待访问URL队列中获取URLs,根据URL从中抓取网页数据,然后对网页进行分析,从中获取所有的URL链接,并把它们放到待 访问的URL队列中,同时将已访问URL移至已访问的URL队列中。不断重复上面的过程。 Crawler存在以下的关键问题: >多线程抓取时的任务调度问题: 搜索引擎会产生多个Crawler同时对网页进行抓取

这就是搜索引擎--读书笔记四--索引基础

ぐ巨炮叔叔 提交于 2020-03-31 07:32:19
搜索引擎索引基础 前几天我阅读了搜索引擎索引这一章,发现倒排索引这一方法确实很巧妙和迷人,它包含的原理和设计方法很独到。所以接下来,我想把我学习到的索引方面的知识给大家讲解一下,总共分为三篇: 索引基础 、 索引建立和更新 、 索引查询 。 我们首先认识倒排索引基本概念 文档 : 一般搜索引擎的处理对象是互联网网页,而文档这个概念要更宽泛些,代表以文本形式存在的存储对象,相比网页来说,涵盖了更多形式,比如Word、PDF、HTML、XML等不同格式的文件都可以称为文档。 文档集合 :由若干文档构成的集合称为文档集合。 文档编号 :在搜索引擎内部,会为文档集合中每一个文档赋予一个唯一的内部编号,以此编号来作为文档的唯一标识,这样方便内部处理。每个文档的内部编号称为文档编号。 单词编号 :和文档编号类似,单词编号可以作为某个单词的唯一表征。 倒排索引 :倒排索引是实现单词—文档矩阵的一种具体存储形式。通过倒排索引,可以通过单词快速获取包含这个单词的文档列表。倒排索引由两个部分组成:单词词典和倒排文件。 单词词典 :搜索引起通常的索引单位是单词,单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息及指向倒排列表的指针(还记得链表吗?亲)。 倒排文件 :所有单词的倒排列表往往顺序的存储在磁盘的某个文件里,这个文件即被称为倒排文件

这就是搜索引擎--读书笔记五--索引的建立与更新

社会主义新天地 提交于 2020-03-31 07:31:13
索引的建立和更新 索引的建立 前一总结里说到,如果索引结构建立好了,可以提高搜索的速度,那么给定一个文档集合,索引是如何建立起来的呢?建立索引的方式有很多种,在这里我就书中提到的三种方法简单总结一下。 两遍文档遍历法 第一次文档遍历 第一次扫描文档集合时,并没有立即开始建立索引,而是收集一些的统计信息,比如文档集合包含的文档个数N、文档集合内包含的不同单词个数M以及每个单词在哪些文档中出现过的信息DF等等。将所有单词对应的DF值全部相加,就可以知道建立最终的索引需要多少内存了,然后在内存中将连续存储区划分成不同大小的片段,词典内某个单词根据自己对应的DF信息,可以通过指针指向属于自己的内存片段的起始位置和终止位置 , 这样在第二遍扫描中,这个单词对应的倒排列表信息会被填充进这个片段中。 第二次文档遍历 这一次扫描的时候,就开始真正建立每个单词的倒排列表信息了,即对每个单词来说,获得包含这个单词的每个文档的文档ID,以及这个单词在文档中出现的次数,这样就可以不断填充第一次遍历扫描所分配的内存空间。当然,如果要记录单词在文档中出现的位置也是可以的,第一次扫描中分配内存时加上这个位置信息就可以了。 值得注意的是 :此方法完全是在内存里完成索引的创建过程的,而后面两种方法则是通过内存和磁盘相互配合来完成索引建立任务的。而正因为创建索引是在内存中完成的,所以就要求内存一定要足够大

10分钟梳理MySQL核心知识点

被刻印的时光 ゝ 提交于 2020-03-31 04:09:29
今天我们用10分钟,重点梳理一遍以下几方面: 数据库知识点汇总; 数据库事务特性和隔离级别; 详解关系型数据库、索引与锁机制; 数据库调优与最佳实践; 面试考察点及加分项。 一、数据库的不同类型 1.常用的关系型数据库 Oracle:功能强大,主要缺点就是贵 MySQL:互联网行业中最流行的数据库,这不仅仅是因为MySQL的免费。可以说关系数据库场景中你需要的功能,MySQL都能很好的满足,后面详解部分会详细介绍MySQL的一些知识点 MariaDB:是MySQL的分支,由开源社区维护,MariaDB虽然被看作MySQL的替代品,但它在扩展功能、存储引擎上都有非常好的改进 PostgreSQL:也叫PGSQL,PGSQL类似于Oracle的多进程框架,可以支持高并发的应用场景,PG几乎支持所有的SQL标准,支持类型相当丰富。PG更加适合严格的企业应用场景,而MySQL更适合业务逻辑相对简单、数据可靠性要求较低的互联网场景。 2.NoSQL数据库(非关系型数据库) Redis:提供了持久化能力,支持多种数据类型。Redis适用于数据变化快且数据大小可预测的场景。 MongoDB:一个基于分布式文件存储的数据库,将数据存储为一个文档,数据结构由键值对组成。MongoDB比较适合表结构不明确,且数据结构可能不断变化的场景,不适合有事务和复杂查询的场景。 HBase:建立在HDFS

索引上(4)

ぃ、小莉子 提交于 2020-03-30 11:23:26
索引 作用:提高数据查询的效率 常用索引模型 哈希表 有序数组 搜索树 哈希表 以键值对的形式存储,适合于只有等值查询的场景。 用一个哈希函数把 key 换算成一个确定的位置,然后把 value 这个位置的数组中。一个 key 会对应一个数组,数组中会有多个 value , value 并不是有序的。 查找时先通过哈希函数算出 key ,找到具体的数组,然后遍历数组,找到具体的位置。 有序数组 以有序数组形式存储,等值查询和范围查询场景中性能非常优秀,只适用于静态存储引擎。 仅仅看查询效率,有序数组就是最好的数据结构了,但是,在需要更新数据多的时候就麻烦了,你往中间插入一个记录就必须得挪动后面所有的记录,成本太高。 所以,有序数组索引只适用于静态存储引擎,比如你要保存2017年某个城市的所有人口信息,这类不会再修改的数据。 搜索树 以类似二叉树的多叉树来实现。 二叉搜索树:每个节点的左儿子小于父节点,父节点又小于右儿子。 多叉树:每个节点有多个儿子,儿子之间的大小保证从左到右。 在 MySQL 中,索引是在存储引擎层实现的,所有并没有同一的索引标准,即不同存储引擎的索引的工作方式并不一样。而即使多个存储引擎支持同一种类型的索引,其底层的实现也可能不同。 InnoDB 使用了 B+ 树索引模型,所有的数据都是存储在 B+ 树中的。每一个索引在 InnoDB 里面对应一棵 B+ 树