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

我是攻城师

专栏作者
492
文章
958840
阅读量
119
订阅数
简述ElasticSearch里面复杂关系数据的存储方式
在传统的数据库里面,对数据关系描述无外乎三种,一对一,一对多和多对多的关系,如果有关联关系的数据,通常我们在建表的时候会添加主外键来建立数据联系,然后在查询或者统计时候通过join来还原或者补全数据,最终得到我们需要的结果数据,那么转化到ElasticSearch里面,如何或者怎样来处理这些带有关系的数据。 我们都知道ElasticSearch是一个NoSQL类型的数据库,本身是弱化了对关系的处理,因为像lucene,es,solr这样的全文检索框架对性能要求都是比较高的,一旦出现join这样的操作,性能会
我是攻城师
2018-05-14
5K0
ElasticSearch+Solr几个case笔记
(一) 最大能索引字符串的长度 关于能索引最大的字符串长度,其实在Elasticsearch和Solr中都是由底层的Lucene决定的 (1)不分词+索引的字符串最大长度为32766字节 (2)分词+索引一般不会出现长度越界问题 (3)不索引的字符串虽然没有长度最大限制,但是不建议使用搜索引擎存储大量文本 (二)设置超出一定长度的字段,不索引 其实这个功能,也是由底层Lucene提供的,关于它的应用场景举个例子,大部分情况下,不分词的字段可能经常会被用来聚合,过滤,排序,分组,但是如果这个不分词的字段非常长
我是攻城师
2018-05-14
9510
最新版Solr6.2.1安装记录
下载最新版Solr6.2.1 wget http://ftp.kddilabs.jp/infosystems/apache/lucene/solr/6.2.1/solr-6.2.1.tgz 如果是windows,直接浏览器访问下载即可。 安装 1,解压上面下载完的tar包,到某个盘符下面 2,进入到solr-6.2.1根目录 3,添加下面两个bat脚本,方便在Windows上测试操作solr,在Liunx无须添加 start.bat //封装启动solr脚本bin/solr.cmd start -fpaus
我是攻城师
2018-05-14
8790
MySQL的InsertOrUpdate语法
MySQL的插入语法提供了类似insertOrUpdate的语法,这种方式大部分存储系统都有类似的机制比如在Solr或者ElasticSearch中,如果主键一样的就更新,不一样就添加,只不过在数据库里可以是主键单个或多个字段,也可以是单个索引或多字段联合唯一索引,逻辑都一样。 比如表里面有id,age,name,address,score四个字段 联合唯一索引 是id+age+name(表里只有索引没有主键,后面单说) 向一张空表插入下面的数据 Java代码 INSERT INTO pe
我是攻城师
2018-05-14
3.8K0
如何利用Guava实现方法调用超时自动中断
在实际的开发中,我们会经常遇见一些这样的情景, (1)对于突发高并发下环境下,服务器压力很大的情况下,调用某些方法超过100ms不响应,应自动拒绝服务,而不是一直阻塞下去,直至服务器崩溃,算是一种变相的服务降级 (2)对于不可预知可能出现死锁的代码,加上时间阈值限制,避免无限制资源竞争 (3)对于不可预知可能出现死循环的代码,加上时间阈值监控,避免死循环恶化 对于一些成熟的开源框架一般都会带有超时响应这种功能,比如 搜索框架:Lucene,Solr,ElasticSearch, RPC框架:D
我是攻城师
2018-05-14
2.7K0
Lucene/Solr/ElasticSearch搜索问题案例分析
最近收集的两个搜索的case,如下: 案例一: 使用 A关键词:“中国诚通控股公司”搜索,不能搜到 B结果“中国诚通控股集团有限公司” 从关键词字面上看,确实不应该出现这种问题,因为A的关键词完全被B包含,如果说搜索B,搜不到A到还可以接受,因为 在关键词越长的情况下,term之间是AND的关系,这样返回结果集就越少,这一点从Google或者其他电商的搜索都可以得到测试确认, 看到这种问题,一般情况下,都跟分词有关系,然后拿到Solr中, 先使用IK最细粒度分词测试两个关键词的分词
我是攻城师
2018-05-14
7580
SolrCloud之Sharding路由介绍
在Solr4.4之后,Solr提供了SolrCloud分布式集群的模式,它带来的主要好处是: (1)大数据量下更高的性能 (2)更好扩展性 (3)更高的可靠性 (4)更简单易用 什么时候应该使用SolrCloud(Shard)呢? (1)更大的数据量 (2)更大的索引体积 (3)想并行索引和查询 (4)想自定义数据分区 SolrCloud路由的分类 A:显式路由(Composite) => 创建时明确指定shard数目,后期不能添加或者删除shard,单个shar
我是攻城师
2018-05-14
1.4K0
浅谈Lucene中的DocValues
前言: 在Lucene4.x之后,出现一个重大的特性,就是索引支持DocValues,这对于广大的solr和elasticsearch用户,无疑来说是一个福音,这玩意的出现通过牺牲一定的磁盘空间带来的好处主要有两个: (1)节省内存 (2)对排序,分组和一些聚合操作时能够大大提升性能 下面来详细介绍下DocValue的原理和使用场景 (一)什么是DocValues? DocValues其实是Lucene在构建索引时,会额外建立一个有序的基于document => field value的映射
我是攻城师
2018-05-14
2.6K0
如何实现Solr自定义评分查询
(一)背景介绍 大多数时候我们使用lucene/solr/elasticsearch自带的评分查询都是没问题的,当然这也仅仅限于简单的业务或者对搜索排名 不敏感的场景中,假设业务方要求有若干业务
我是攻城师
2018-05-14
1.6K0
如何通过JMX远程监控Solr?
有时候,我们在服务器端部署了JAVA程序,而又想在windows上监控这个程序的JVM的情况,该如何操作呢? 答案就是通过JMX监控,需要在启动的java程序中,加入一定的jvm参数和指定端号,并且关闭该机器上的防火墙,这时候我们就可以在window上使用jconsole或者jvisualvm远程连接监控了。 使用jmx有两种方式: 第一种,比较简单,无须用户名密码 第二种,使用ssl认证,需要加入用户名和密码才能连接 本文仅介绍第一种的使用 ,如下: (1) 编辑solr-5.1.0
我是攻城师
2018-05-14
1K0
Lucene+Solr+ElasticSearch查询匹配优化
当我们在处理搜索业务时候,需求往往是灵活多变的,有时候我们需要精确匹配,有时候我们又需要全文检索,而有时候,我们又想匹配度高而且还能全文检索,这似乎是精确匹配和模糊匹配一个妥协的策略,没错这就是搜索引擎出现的目的,以往的数据库是没法解决这种问题的,数据库只能回答有,没有,存在,不存在,并不能在有和没有之间做一个完美的妥协,比如说能把最匹配最相关的结果放在topN,仅靠like模糊查询是解决不了这种问题的。 Apache Lucene这个强大的全文检索核心包,提供了搜索引擎的核心组件,通过相关性评分算法
我是攻城师
2018-05-14
1.2K0
开源大数据索引项目hive-solr
github地址:https://github.com/qindongliang/hive-solr 欢迎大家fork和使用 关于这个项目的介绍,请参考散仙前面的文章: http://qindongliang.iteye.com/blog/2283862 最新更新: (1)添加了对solrcloud集群的支持 (2)修复了在反序列时对于hive中null列和空值的处理bug (3)优化了在构建索引时对于null值和空值的忽略 一些测试: 数据量:约一千二百万,8个字段,其中一个是大
我是攻城师
2018-05-14
1.1K0
浅谈Solr和ElasticSearch建索引性能优化策略
由于Solr和ElasticSearch都是基于Lucene构建的,所以他们之间有很大程度的相似性,故而他们的一些优化策略基本也是通用的,面对越来越多的海量数据,如何优化全量索引的写入性能呢? 散仙简单总结了下面几个方向的优化策略,如有疑问,欢迎拍砖。 (一)硬件优化: (1)CPU加大,有利于并发写入 (2)内存提升,加大写入缓冲 (3)磁盘IO,使用SSD或者IO读写更快的磁盘 (4)网络IO,保证客户端与服务端的通信带宽充足 (二)服务端框架优化: (1)加大shard的数目,理论
我是攻城师
2018-05-14
1.2K0
如何使用Hive集成Solr?
(一)Hive+Solr简介 Hive作为Hadoop生态系统里面离线的数据仓库,可以非常方便的使用SQL的方式来离线分析海量的历史数据,并根据分析的结果,来干一些其他的事情,如报表统计查询等。 Solr作为高性能的搜索服务器,能够提供快速,强大的全文检索功能。 (二)为什么需要hive集成solr? 有时候,我们需要将hive的分析完的结果,存储到solr里面进行全文检索服务,比如以前我们有个业务,对我们电商网站的搜索日志使用hive分析完后 存储到solr里面做报表查询,因为里面涉及到搜索
我是攻城师
2018-05-14
1.5K0
SolrCloud5.4.1集群实战(一)
古时候,人们用一头牛拉不动一个耕地的犁时,不会去找个比这头牛更大的牛,而是会直接使用两个牛一起参与耕地。在分布式计算中,道理同样如此,Hadoop就是一个典型的例子。诸如此类的有很多,这就是典型水平切分架构。早期的solr仅仅支持主从架构模式,这种架构可以提高集群的吞吐量和可靠性,当面临越来越多的数据时,并不能提升检索性能,所以在solr4.x之后,开始支持cloud模式的集群,可以将一份超大索引水平切分到多台机器上,从而提升系统的检索性能,当然也兼具了主从模式的优点,支持容错,副本,扩容等。 基础环境
我是攻城师
2018-05-14
7960
Hbase+Solr实现二级索引提供高效查询
接着上一篇介绍协处理器的文章http://qindongliang.iteye.com/blog/2277145,本篇我们来实战一个例子,看下如何使用协处理来给Hbase建立二级索引。 github地址:https://github.com/qindongliang/hbase-increment-index 业务需求: 现有一张Hbase的表,数据量千万级+,而且不断有新的数据插入,或者无效数据删除,每日新增大概几百万数据,现在已经有离线的hive映射hbase 提供离线查询,但是由于性能
我是攻城师
2018-05-14
2.9K0
Solr配置maxBooleanClauses属性不生效原因分析
上次已经写过一篇关于solr中,查询条件过多的异常的文章,这次在总结扩展一下: 有时候我们的查询条件会非常多,由于solr的booleanquery默认设置的条件数为1024,所以超过这个限制的 会报异常,这样设置的原因是为了限制过多条件查询,降低查询的性能,但有时候又必须这样查,或分析数据用, 所以可以临时改变下,修改方法: 修改solrconfig.xml文件: Java代码 <maxBooleanClauses>20000</maxBooleanClauses> 理想情况下,配置
我是攻城师
2018-05-14
1.2K0
后台问题解答(2015-12-04)
问题: solr采用标准分词器搜索中文时怎么控制搜索的文本内容是正序,如我要搜索“小李”,只想搜出小李飞刀这样的内容,像李小龙这样的内容不做检出 回复: 标准分词器,对中文汉字会基于单字切分,所以: 小李飞刀 会切分成 小 | 李 | 飞 | 刀 李小龙 会切分成 李 | 小 | 龙 基于lucene扩展的搜索引擎solr和elasticsearch,在索引时都会基本都会加上切分词的位置,偏移量等,所以如果你想控制正序搜索内容,其实就可以用距离查询来解决这个问题, 对搜索词加上双引号(距离查询
我是攻城师
2018-05-14
5010
Elasticsearch的Mapping之元数据类型
在es中,mapping的存在类似数据库的表结构定义或者solr里面的schemal文件,它里面定义了每个添加的doc的处理方式。 mapping type定义了不同的逻辑上组隔离,这一点类似于数据库的各个表,例如用户表,订单表,商品表,在es里面 每个表都有自己的一个mapping type,每个mapping type包含: 元数据字段: (1),身份元数据 _index : 此doc例如于那个index名 , 自动被索引,可被查询,聚合,排序使用,或者脚本里访问 _type:
我是攻城师
2018-05-14
1.2K0
Solr中Group和Facet的用法
先来看一下Group与Facet的区别: 相同点:两者都能分组一个或多个字段并求数量,并支持组内分页 不同点: facet可以对分组数量进行过滤,以及排序,和日期范围,时间范围分组,但是如果
我是攻城师
2018-05-14
1.8K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档