摘要: 因为只要索引处于open状态,就会占用内存+磁盘; 如果将索引close,只会占用磁盘 Curl -XPOST ‘hadoop01:9200/index/_close’ 在es中删除文档,数据不会马上在硬盘上删除,而是在es索引中产生一个.del 文件; 并且es在检索过程中也会把.del文件进行检 阅读全文
posted @ 2017-05-22 23:54 niutao 阅读(4744) 评论(0) 推荐(0) 编辑
摘要: Es是基于lucene构建的搜索引擎;lucene查询的快是因为倒排索引; Es中经常会看到segments_q这样的文件,那么这个文件就是一个lucene的倒排索引; 倒排索引是由**词典 (Term Dictionary)和文档列表(Postings List)组成,lucene会在词典上做一层 阅读全文
posted @ 2017-05-22 23:53 niutao 阅读(719) 评论(0) 推荐(0) 编辑
摘要: 适当的提升分片数量可以提升建立索引的速度; 一般情况下:一个索引库建立5-20个分片是最合适的; 注意:如果分片过少或者过多,都会降低检索的速度 分片数过多会导致: 分片数太少导致: 单个分片索引过大,降低整体的检索速率 建议: 将单个分片存储存储索引数据的大小控制在20G左右;绝对不要超过50G 阅读全文
posted @ 2017-05-22 23:50 niutao 阅读(6792) 评论(0) 推荐(0) 编辑
摘要: 多副本可以提升检索的能力,但是如果副本数量太多,插入数据的时候容易出现卡顿现象; 因为主分片要把数据同步给所有的副本,所以建议副本数量最好是1-2个; Es在索引数据的时候,如果存在副本,那么主分片会将数据同时同步到副本; 如果当前插入大量数据,那么会对es集群造成一定的压力,所以在插入大量数据前, 阅读全文
posted @ 2017-05-22 23:50 niutao 阅读(4086) 评论(0) 推荐(1) 编辑
摘要: 1、将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等 防止内存抖动 2:给多大的堆内存? 给ES的内存配置不是越大越好,建议不能超过32GB,不同jdk版本最大边界值是不同的,对于32位小于32G JVM才采用内存对象指针压缩技术,不然对象指针需要占用很大的内存; 一旦你越过那个神奇的30 阅读全文
posted @ 2017-05-22 23:49 niutao 阅读(4429) 评论(0) 推荐(0) 编辑
摘要: 在实际的生产中,如果要插入大批量数据的时候需要使用多个索引库,如果我们还是手工指定每个索引的配置信息settings和mappings,是非常耗时的; 针对这种情况,es有index template可以解决上面的问题; 索引可使用预定义的模板进行创建,这个模板称作Index templates。模 阅读全文
posted @ 2017-05-22 23:48 niutao 阅读(624) 评论(0) 推荐(0) 编辑
摘要: 3.1、分片查询方式 当前的图片中有5个主分片,5个副本;这对于es的集群来说,这种配置是非常常见的; 但是问题来了,当我们的客户端做查询的时候,程序会向主分片发送请求还是副本发送请求? 还是说直接去集群上随机找一台机器查询,还是在这个机器里面在随机的找到分片和副本查询? 【注意】: 默认情况下是随 阅读全文
posted @ 2017-05-22 23:47 niutao 阅读(1061) 评论(0) 推荐(0) 编辑
摘要: 一个正常es集群中只有一个主节点,主节点负责管理整个集群,集群的所有节点都会选择同一个节点作为主节点;所以无论访问那个节点都可以查看集群的状态信息。 而脑裂问题的出现就是因为从节点在选择主节点上出现分歧导致一个集群出现多个主节点从而使集群分裂,使得集群处于异常状态 这样的脑裂状态直接让节点失去了集群 阅读全文
posted @ 2017-05-22 23:47 niutao 阅读(1168) 评论(0) 推荐(0) 编辑
摘要: 1:需求: 解决海量数据的存储,并且能够实现海量数据的秒级查询 Hbase是典型的nosql,是一种构建在HDFS之上的分布式、面向列的存储系统,在需要的时候可以进行实时的大规模数据集的读写操作;但是hbase的语法非常固话,即便在hbase之上嫁接了phoneix在应对复杂查询的时候,仍然力不从心 阅读全文
posted @ 2017-05-22 23:44 niutao 阅读(4372) 评论(1) 推荐(0) 编辑
摘要: 构建数据: 1:分组求count 计算每个球队的球员数量: select team, count(*) as player_count from player group by team; 2:Group by 多个字段 计算每个球队每个位置的球员数 select team, position, c 阅读全文
posted @ 2017-05-22 23:36 niutao 阅读(565) 评论(0) 推荐(0) 编辑
摘要: 我们已经介绍了如何使用不同的条件查询来构建查询并搜索数据。我们还熟知了评分,它告诉我们在给定的查询中,哪些文档更重要以及查询文本如何影响排序。然而,有时我们可能要在不影响最后分数的情况下,选择索引中的某个子集,这就要使用过滤器。 如果可以,应该尽可能使用过滤器。过滤器不影响评分,而得分计算让搜索变得 阅读全文
posted @ 2017-05-22 23:35 niutao 阅读(1715) 评论(0) 推荐(1) 编辑
摘要: 随着应用程序的增长,提高搜索质量的需求也进一步增大。我们把它叫做搜索体验。我们需要知道什么对用户更重要,关注用户如何使用搜索功能。这导致不同的结论,例如,有些文档比其他的更重要,或特定查询需强调一个字段而弱化其他字段。这就是可以用到加权的地方。 进一步说搜索体验,我们更希望检索出来的数据是最想得到的 阅读全文
posted @ 2017-05-22 23:34 niutao 阅读(4014) 评论(0) 推荐(0) 编辑
摘要: 代码实现: 编写Article实体类: 阅读全文
posted @ 2017-05-22 23:32 niutao 阅读(1068) 评论(0) 推荐(0) 编辑
摘要: 按照一般的查询流程来说,如果我想查询前10条数据: · 1 客户端请求发给某个节点 · 2 节点转发给个个分片,查询每个分片上的前10条 · 3 结果返回给节点,整合数据,提取前10条 · 4 返回给请求客户端 那么当我想要查询第10条到第20条的数据该怎么办呢?这个时候就用到分页查询了。 浅分页可 阅读全文
posted @ 2017-05-22 23:30 niutao 阅读(8189) 评论(3) 推荐(1) 编辑
摘要: 插入样例数据: 插入样例数据: 1:查询所有 matchAllQuery()匹配所有文件 match_all查询是Elasticsearch中最简单的查询之一。它使我们能够匹配索引中的所有文件。 2:解析查询字符串 相比其他可用的查询,query_string查询支持全部的Apache Lucene 阅读全文
posted @ 2017-05-22 23:29 niutao 阅读(29192) 评论(0) 推荐(0) 编辑
摘要: 1.7.1: 创建索引 默认创建好索引,mappings为空 1.7.2: 删除索引 1.7.3:索引的映射操作 为什么要进行手动的映射? 如果你习惯SQL数据库,或许知道,在存入数据前,需要创建模式来描述数据(schmal);尽管elasticsearch是一个无模式的搜索引擎,可以即时算出数据结 阅读全文
posted @ 2017-05-22 23:26 niutao 阅读(5199) 评论(1) 推荐(1) 编辑
摘要: 删除文档操作 2:通过查询的方式删除 往往生产的需求是能够类似mysql一样,通过查询出符合条件的数据进行删除: 比如mysql: 那么es也是支持这种操作的:DeleteByQueryAction允许检索一个索引,把匹配出来的字段删除 3: 优化-通过查询进行删除 上面的查询删除,在实际的生产中会 阅读全文
posted @ 2017-05-22 23:22 niutao 阅读(4009) 评论(0) 推荐(1) 编辑
摘要: 之前的更新文档操作 1:方式1 2:方式2 3:方式3 阅读全文
posted @ 2017-05-22 23:19 niutao 阅读(505) 评论(0) 推荐(0) 编辑
摘要: 1:搜索文档数据(单个索引) 2:搜索文档数据(多个索引) 阅读全文
posted @ 2017-05-22 23:17 niutao 阅读(656) 评论(0) 推荐(0) 编辑
摘要: 插入文档操作的一种优化,因为每次插入单条文档,都会向es中发送请求。然后es执行在返回结果; 如果有大批量的文档数据需要插入,这个时候单挑插入操作显然是不合理的; 之前学习的命令行批量执行方式: 1:普通的批量插入方式 这种方式也会有问题,比如在批量插入的时候,多大数据量插入一次,多少条插入一次,多 阅读全文
posted @ 2017-05-22 23:16 niutao 阅读(13010) 评论(0) 推荐(0) 编辑