lucene

Elasticsearch调优实践

与世无争的帅哥 提交于 2020-04-15 09:10:36
【推荐阅读】微服务还能火多久?>>> 转载自:腾讯技术工程 微信公众号 背景 Elasticsearch(ES)作为NOSQL+搜索引擎的有机结合体,不仅有近实时的查询能力,还具有强大的聚合分析能力。因此在全文检索、日志分析、监控系统、数据分析等领域ES均有广泛应用。而完整的Elastic Stack体系(Elasticsearch、Logstash、Kibana、Beats),更是提供了数据采集、清洗、存储、可视化的整套解决方案。 本文基于ES 5.6.4,从性能和稳定性两方面,从linux参数调优、ES节点配置和ES使用方式三个角度入手,介绍ES调优的基本方案。当然,ES的调优绝不能一概而论,需要根据实际业务场景做适当的取舍和调整,文中的疏漏之处也随时欢迎批评指正。 性能调优 一 Linux参数调优 1. 关闭交换分区,防止内存置换降低性能。 将/etc/fstab 文件中包含swap的行注释掉 sed -i '/swap/s/^/#/' /etc/fstab swapoff -a 2. 磁盘挂载选项 noatime:禁止记录访问时间戳,提高文件系统读写性能 data=writeback: 不记录data journal,提高文件系统写入性能 barrier=0:barrier保证journal先于data刷到磁盘,上面关闭了journal,这里的barrier也就没必要开启了

ES 性能调优过程

烈酒焚心 提交于 2020-04-15 08:29:05
【推荐阅读】微服务还能火多久?>>> 背景:在数据和服务都准备完成的情况下,打开页面,发现请求需要要几秒才返回; 思路:1.查看搜索接口请求本身耗时情况,排除网络抖动因素,发现搜索接口请求到ES返回结果本身耗时较高; 2.检查每次请求到ES的入参,并在原有参数中加入"profile": true,查看ES处理搜索请求的耗时分布情况; 入参: 返回: 发现只是一个简单的termQuery耗时818ms,然后查看是否ES集群负载情况; 3.初步定位:ES集群的cpu和内存消耗较大,磁盘io写入较高,认为是数据同步服务不断的在提交索引建立请求导致ES集群负载较高,影响了查询性能; 4.初步解决:停掉数据同步服务,使ES集群负载降下来,再做查询,发现搜索响应时间没有任何变化,继而再次监控ES机器磁盘IO; 5.再次定位:发现每次搜索请求时,磁盘需要读40M+的数据,然而一次请求的数据不过10+k,考虑到搜索的索引文件是由多个segment组成,这里是读取多个segment到内存进行查询匹配,打开segment分布情况发现一个索引节点有多个小的segment,判断是由于打开多个文件随机读写提升了读取索引数据耗时; iostat curl 'http://xxxx:9200/_cat/segments/m_pd_cu_id_wifi_2es_inc_hi_out?v&h=shard

超实用企业级搜索引擎_Elasticsearch(一)快速入门

眉间皱痕 提交于 2020-04-10 17:14:28
Elasticsearch 一. 入门 在企业级项目中,如果需要完成数量级较大搜索服务,传统数据库搜索会显得力不从心,性能和速度达不到真实业务需求,一般我们都会使用全文检索技术来进行替代。 常见的全文检索技术有:Solr、Elasticsearch等。 今天就让我们来学习其中之一: Elasticsearch 二. . Elastic 概述 Elastic官网: https://www.elastic.co/cn/ Elastic有一条完整的产品线:Elasticsearch、Kibana、Logstash等,前面说的三个就是大家常说的ELK技术栈。 Logstash 是动态数据收集管道,拥有可扩展的插件生态系统。也就是数据的收集,处理和储存。 Elasticsearch 是一个基于 JSON 的分布式搜索和分析引擎。也就是数据的检索和分析。 Kibana 可视化 Elastic Stack 的窗户(工具)。探索数据并管理堆栈。也就是数据的可视化 ELK技术栈: E lasticsearch :分布式搜索和分析引擎。 L ogstash :数据的收集,处理和储存。 K ibana :数据的可视化,可视化工具,辅助Elasticsearch 。 三. ElasticSearch介绍 1. 什么是ElasticSearch ElasticSearch是一个基于Lucene的搜索服务器

Lucene源码导入eclipse

半城伤御伤魂 提交于 2020-04-10 11:01:15
准备 lucene源码,下载地址:https://github.com/apache/lucene-solr.git - jdk 1.8 - eclipse - apache-ant-1.9.11 配置环境变量 -apache-ivy-2.5.0-rc1 把ivy-2.5.0-rc1.jar放到D:\softInstall\apache-ant-1.9.11\lib目录下 执行ant ivy-bootstrap 如果不执行上面步骤就会报错如下,具体啥原因不太清楚: 然后到lucene项目路径下执行ant eclipse,等待时间比较漫长执行成功之后就能看到.project后缀的文件然后就可以导入了。也可以执行ant idea 来源: oschina 链接: https://my.oschina.net/u/1584242/blog/1805974

lucene wildcard query with space

自古美人都是妖i 提交于 2020-04-10 09:16:08
问题 I have Lucene index which has city names. Consider I want to search for 'New Delhi'. I have string 'New Del' which I want to pass to Lucene searcher and I am expecting output as 'New Delhi'. If I generate query like Name:New Del* It will give me all cities with 'New and Del'in it. Is there any way by which I can create Lucene query wildcard query with spaces in it? I referred and tried few solutions given @ http://www.gossamer-threads.com/lists/lucene/java-user/5487 回答1: It sounds like you

Elasticsearch入门

十年热恋 提交于 2020-04-08 14:56:16
在企业级项目中,如果需要完成数量级较大搜索服务,传统数据库搜索会显得力不从心,性能和速度达不到真实业务需求,一般我们都会使用全文检索技术来进行替代。 常见的全文检索技术有: Solr 、 Elasticsearch 等。 今天,小喵要说的是其中之一: Elasticsearch 一 . 概述 Elastic 官网 : http://www.elastic.co/cn/ Elastic 有一条完整的产品线: Elasticsearch 、 Kibana 、 Logstash 等,前面说的三个就是大家常说的 ELK 技术栈。 E lasticsearch 是一个基于 JSON 的分布式搜索和分析引擎。也就是数据的检索和分析。 L ogstash 是动态数据收集管道,拥有可扩展的插件生态系统。也就是数据的收集,处理和储存。 K ibana 可谓 Elastic Stack 的窗户。探索数据并管理堆栈。也就是数据的可视化 以上是官方介绍 ,简单来说: Elasticsearch ,分布式搜索和分析引擎; Logstash,数据的收集,处理和存储; Kibana,数据的可视化工具,用来辅助Elasticsearch. 二.Elasticsearch介绍 1.什么时候Elasticsearch ElasticSearch 是一个基于 Lucene 的搜索服务器,提供了一个分布式的全文搜索引擎。

全文搜索引擎Elasticsearch之容器部署与使用

风格不统一 提交于 2020-04-07 02:10:27
具体请参考 官方文档 -> Elasticsearch Reference 一、什么是 Elasticsearch Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 二、Docker安装Elasticsearch 1、开发模式 可以使用以下命令快速启动Elasticsearch以进行开发或测试: $ docker run -p 9200:9200 -p 9300:9300 -d --name es -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.5.3 # 集成ik插件 $ docker run -p 9200:9200 -p 9300:9300 -d --name es -e "discovery.type=single-node" bachue/elasticsearch-ik:6.2.4 2、生产模式 该 vm.max_map_count 内核设置需要至少设置为 2

服务器高危端口列表

蓝咒 提交于 2020-04-06 09:45:04
端口 服务 渗透测试 tcp 20,21 FTP(文件传输协议) 允许匿名的上传下载,爆破,嗅探,win提权,远程执行(proftpd 1.3.5),各类后门(proftpd,vsftp 2.3.4) tcp 22 SSH (安全外壳协议 ) 可根据已搜集到的信息尝试爆破,v1版本可中间人,ssh隧道及内网代理转发,文件传输等等 tcp 23 Telnet ( 远程终端协议) 爆破,嗅探,一般常用于路由,交换登陆,可尝试弱口令 tcp 25 SMTP(简单邮件传输协议) 邮件伪造,vrfy/expn查询邮件用户信息,可使用smtp-user-enum工具来自动跑 tcp/udp 53 DNS(域名系统) 允许区域传送,dns劫持,缓存投毒,欺骗以及各种基于dns隧道的远控 tcp/udp 69 TFTP (简单文件传送协议 ) 尝试下载目标及其的各类重要配置文件 tcp 80-89,443,8440-8450,8080-8089 各种常用的Web服务端口 可尝试经典的topn,vpn,owa,webmail,目标oa,各类Java控制台,各类服务器Web管理面板,各类Web中间件漏洞利用,各类Web框架漏洞利用等等…… tcp 110 POP3(邮局协议版本3 ) 可尝试爆破,嗅探 tcp 111,2049 NFS(网络文件系统) 权限配置不当 tcp 137,139,445

搜索框架:lucene,Solr,Elastic Search 了解一下

耗尽温柔 提交于 2020-04-05 17:56:16
下一篇:Elasticsearch 入门安装 1、lucene (了解) apache 项目基金会的一个顶级项目(主要用于搜索) 1.2、什么是 Lucene lucene 是一个开源的搜索架构,它的作者就是当前hadoop(大数据)的作者 Lucene core: 基于 Java 开发,包含了搜索库,包含了搜索索引,包含了关键字的高亮显示/分词器 ... Solr: 借助于 lucene 进行开发的,就是使用lucene core 进行构建和开发的,并且提供了 json,py,ruby,java 各种API PyLucene: 其实也支持 python 无论是ES还是Solr都是基于Lucene进行开发的 2、Solr (了解) 一个搜索框架,支持分布式,solr 是构建在 Lucene 之上的,所支持格式 json,xml,csv . . . 3、ElasticSearch ES 是一个分布式使用 RestFul 风格的数据搜索引擎,也是构建在 Lucene 之上的,且数据储存格式只支持 JSON 格式。 3.1、ES 的三大核心 Index: 相当于关系型数据库中的库 Type: 相当于关系型数据库中的表 Document: 相当于关系型数据库中的表数据 3.2、ES 和 Solr 的区别 1、ES 下载以后直接可以使用;Solr 配置比较复杂 2、Solr 使用

Lucene全文检索-从零开始(1)

这一生的挚爱 提交于 2020-04-04 06:34:28
1.Lucene简介 Lucene是一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,是一款高性能、可扩展的信息检索工具库。 2.全文检索 全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。 3.为什么要用Lucene 也许有人会说我经常都是用like、Match、contain来做基本查询的。当你只有几百行几千行数据时,查询速度很快,但是如果有几十万几百万条数据呢。下面我们对用like关键字查询和使用Lucene查询的时间进行比较。 3.1 Lucene和like的效率比较 数据表中共有数据146450条。 首先我们用like来查询 接着我们使用Lucene检索 通过比较,两者有着明显的差别,lucene几乎是like的40倍。 4.全文检索中分词器的使用 4.1 盘古分词 1 class Program 2 { 3 /// <summary> 4 /// 盘古分词器 5 /// </summary> 6 public Analyzer panGuAnalyzer 7 { 8 get { return new PanGuAnalyzer(); } 9 } 10 11