搜索引擎
HelloWorld搬运工
HelloWorld是学习程序的第一个程序,搬运工是将一件东西从一个地方运到另一个地方。HelloWorld搬运工,分享技术知识,有原创也有转发,彼此交流,一起学习,共同进步。
展开
-
ElasticSearch深度分页引发的机器性能问题
个人博客请访问http://www.x0100.top深度分页引发的机器性能问题最近碰到一个ElasticSearch深度分页搜索,导致cpu占用过高问题,通过查阅ElasticSearch: 权威指南,了解到了深度分页为何会引起机器资源占用:在集群系统中深度分页为了理解为什么深度分页是有问题的,让我们假设在一个有5个主分片的索引中搜索。当我们请求结果的第一页(结果1到10)时,每个分片产生自己最顶端10个结果然后返回它们给请求节点(requesting node),它再排序这所...原创 2020-06-16 15:40:59 · 651 阅读 · 0 评论 -
ES数十亿数据量级的场景下查询性能优化?
个人博客请访问http://www.x0100.topES 客户端读取数据的流程客户端 -> shard -> filesystem cache -> 磁盘文件海量数据检索查询性能优化思路如果内存足够大, filesystem cache 会缓存,如果查询走filesystem cache 则速度耗时在毫秒级别,如果查询请求走磁盘...原创 2020-05-07 11:20:37 · 587 阅读 · 0 评论 -
centos中安装配置ElasticSearch-Head插件
个人博客请访问http://www.x0100.top关于es是什么?能做什么?有什么优势?本文不在多说,如有不清楚请查看Elasticsearch学习,请先看这一篇!本文主要是记录如何在linux下安装es环境以及配置,博主使用的是Centos,linux系统间相差不大。首先ES需要运行在java8,重要的事情说三遍,一定不要求新,使用java9!一定不要求新,使用java9!...原创 2020-04-26 11:39:15 · 399 阅读 · 0 评论 -
Elasticsearch开发人员最佳实战指南
个人博客请访问http://www.x0100.top几个月以来,我一直在记录自己开发Elasticsearch应用程序的最佳实践。本文梳理的内容试图传达Java的某些思想,我相信其同样适用于其他编程语言。我尝试尽量避免重复教程和Elasticsearch官方文档中已经介绍的内容。本文梳理的内容都是从线上实践问题和个人总结的经验汇总得来的。文章从以下几个维度展开讲解: 映射(Ma...原创 2020-04-22 15:42:45 · 359 阅读 · 0 评论 -
ElasticSearch 使用 Logstash 从 MySQL 中同步数据
个人博客请访问http://www.x0100.top目的是希望将现有的数据导入到 ElasticSearch 中,研究了好几种,除了写代码的方式,最简便的就是使用 Logstash 来导入数据到 ElasticSearch 中了。因为现有的数据在 MySQL 数据库中,所以希望采用logstash-input-jdbc插件来导入数据。安装 ElasticSearch 和 Lo...原创 2020-04-21 15:17:28 · 482 阅读 · 0 评论 -
elasticsearch系列八:ES 集群管理(集群规划、集群搭建、集群管理)
一、集群规划搭建一个集群我们需要考虑如下几个问题:1. 我们需要多大规模的集群?2. 集群中的节点角色如何分配?3. 如何避免脑裂问题?4. 索引应该设置多少个分片?5. 分片应该设置几个副本?下面我们就来分析和回答这几个问题1、我们需要多大规模的集群?需要从以下两个方面考虑:1.1 当前的数据量有多大?数据增长情况如何?1.2 你的机器配置如何?cpu、...原创 2020-03-06 18:34:51 · 383 阅读 · 0 评论 -
elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、Spri
一、ES Client 简介1.ES是一个服务,采用C/S结构2. 回顾 ES的架构3. ES支持的客户端连接方式3.1 REST API ,端口 9200 这种连接方式对应于架构图中的RESTful style API这一层,这种客户端的连接方式是RESTful风格的,使用http的方式进行连接3.2 Transport 连接 端口 9300...原创 2020-03-06 18:01:33 · 821 阅读 · 0 评论 -
elasticsearch系列六:聚合分析(聚合分析简介、指标聚合、桶聚合)
一、聚合分析简介1. ES聚合分析是什么?聚合分析是数据库中重要的功能特性,完成对一个查询的数据集中数据的聚合计算,如:找出某字段(或计算表达式的结果)的最大值、最小值,计算和、平均值等。ES作为搜索引擎兼数据库,同样提供了强大的聚合分析能力。对一个数据集求最大、最小、和、平均值等指标的聚合,在ES中称为指标聚合 metric而关系型数据库中除了有聚合函数外,还可以对查询出的...原创 2020-03-06 16:52:43 · 595 阅读 · 0 评论 -
elasticsearch系列五:搜索详解(查询建议介绍、Suggester 介绍)
一、查询建议介绍1. 查询建议是什么?查询建议,为用户提供良好的使用体验。主要包括: 拼写检查; 自动建议查询词(自动补全)拼写检查如图:自动建议查询词(自动补全):2. ES中查询建议的API查询建议也是使用_search端点地址。在DSL中suggest节点来定义需要的建议查询示例1:定义单个建议查询词POST twitter/_search...原创 2020-03-06 16:17:56 · 481 阅读 · 0 评论 -
elasticsearch系列四:搜索详解(搜索API、Query DSL)
一、搜索API1. 搜索API 端点地址从索引tweet里面搜索字段user为kimchy的记录GET /twitter/_search?q=user:kimchy从索引tweet,user里面搜索字段user为kimchy的记录GET /twitter/tweet,user/_search?q=user:kimchyGET /kimchy,elasticsearc...原创 2020-03-06 15:18:05 · 744 阅读 · 0 评论 -
elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))
一、分词器1. 认识分词器1.1 Analyzer 分析器在ES中一个Analyzer 由下面三种组件组合而成:character filter :字符过滤器,对文本进行字符过滤处理,如处理文本中的html标签字符。处理完后再交给tokenizer进行分词。一个analyzer中可包含0个或多个字符过滤器,多个按配置顺序依次进行处理。tokenizer:分词器,对文本...原创 2020-03-06 10:05:37 · 1111 阅读 · 0 评论 -
elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)
一、快速入门1.查看集群的健康状况http://localhost:9200/_cathttp://localhost:9200/_cat/health?v说明:v是用来要求在结果中返回表头状态值说明Green- everything is good (cluster is fully functional),即最佳状态Yellow- all data ...原创 2020-03-05 17:34:40 · 566 阅读 · 0 评论 -
elasticsearch系列一:elasticsearch(ES简介、安装&配置、集成Ikanalyzer)
一、ES简介1.ES是什么?Elasticsearch 是一个开源的搜索引擎,建立在全文搜索引擎库 Apache Lucene 基础之上用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。Elasticsearch 不仅仅只是一个全文搜索引擎。 ...原创 2020-03-05 15:25:57 · 308 阅读 · 0 评论 -
Solr系列六:solr搜索详解优化查询结果(分面搜索、搜索结果高亮、查询建议、折叠展开结果、结果分组、其他搜索特性介绍)
一、分面搜索1. 什么是分面搜索?分面搜索:在搜索结果的基础上进行按指定维度的统计,以展示搜索结果的另一面信息。类似于SQL语句的group by分面搜索的示例:http://localhost:8983/solr/techproducts/browse2. Solr中支持的分面查询字段分面、区间分面、决策树分面、查询分面2.1 字段分面执行搜索时,...原创 2020-03-04 16:37:48 · 611 阅读 · 0 评论 -
Solr系列三:solr索引详解(Schema介绍、字段定义详解、Schema API 介绍)
一、Schema介绍1. Schema 是什么?Schema:模式,是集合/内核中字段的定义,让solr知道集合/内核包含哪些字段、字段的数据类型、字段该索引存储。2.Schema 的定义方式Solr中提供了两种方式来配置schema,两者只能选其一2.1 默认方式,通过Schema API 来实时配置,模式信息存储在内核目录的conf/managed-schema文件中。...原创 2020-03-04 07:18:27 · 591 阅读 · 0 评论 -
Solr系列二:solr-部署详解(solr两种部署模式介绍、独立服务器模式详解、SolrCloud分布式集群模式详解)
一、solr两种部署模式介绍Standalone Server 独立服务器模式:适用于数据规模不大的场景SolrCloud 分布式集群模式:适用于数据规模大,高可靠、高可用、高并发的场景二、独立服务器模式详解1.独立服务器模式架构说明:1、每个solr服务器实例(启动的一个solr服务器进程)都有一个solr主目录(系统变量名为:solr.solr.home)。启动...原创 2020-03-03 16:18:26 · 357 阅读 · 0 评论 -
Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)
一、搜索流程详解1. 先看一下Lucene的架构图由图可知搜索的过程如下: 用户输入搜索的关键字、对关键字进行分词、根据分词结果去索引库里面找到对应的文章id、根据文章id找到对应的文章2. Lucene搜索API 图示3.Lucene搜索代码示例先在pom.xml里面引入查询分析器模块<!-- lucene-queryparser 查...原创 2020-03-03 14:09:13 · 1128 阅读 · 0 评论 -
Lucene系列五:Lucene索引详解(IndexWriter详解、Document详解、索引更新)
一、IndexWriter详解问题1:索引创建过程完成什么事? 分词、存储到反向索引中1. 回顾Lucene架构图:介绍我们编写的应用程序要完成数据的收集,再将数据以document的形式用lucene的索引API创建索引、存储。 这里重点要强调应用代码负责做什么,lucene负责做什么。2. Lucene索引创建API 图示通过该图介绍luce...原创 2020-03-02 21:44:41 · 1016 阅读 · 0 评论 -
Lucene系列四:Lucene提供的分词器、IKAnalyze中文分词器集成、扩展 IKAnalyzer的停用词和新词
一、Lucene提供的分词器StandardAnalyzer和SmartChineseAnalyzer1.新建一个测试Lucene提供的分词器的maven项目LuceneAnalyzer2. 在pom.xml里面引入如下依赖<!-- lucene 核心模块 --> <dependency> <groupId&...原创 2020-03-02 18:25:23 · 714 阅读 · 0 评论 -
Lucene系列三:Lucene分词器详解、实现自己的一个分词器
一、Lucene分词器详解1. Lucene-分词器API(1)org.apache.lucene.analysi.Analyzer分析器,分词器组件的核心API,它的职责:构建真正对文本进行分词处理的TokenStream(分词处理器)。通过调用它的如下两个方法,得到输入文本的分词处理器。public finalTokenStreamtokenStream(Stringf...原创 2020-03-02 16:16:43 · 924 阅读 · 0 评论 -
Lucene系列二:Lucene(Lucene介绍、Lucene架构、Lucene集成)
一、Lucene介绍1. Lucene简介 最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索功能,或者是以此为基础建立起完整的全文检索引擎。是Apache的子项目,网址:http://lucene.apache.org/2...原创 2020-03-02 13:46:34 · 540 阅读 · 0 评论 -
Lucene系列一:搜索引擎核心理论
一、为什么需要搜索引擎问题1:数据库索引的原理是怎样的? 索引原理:对列值创建排序存储,数据结构={列值、行地址}。在有序数据列表中就可以利用二分查找快速找到要查找的行的地址,再根据地址直接取行数据。问题2:索引的排序,是怎么排的? 数值列 时间列 文本列问题3:在新闻标题列上建索引,当我们查询 标题 = ‘钓鱼岛’,数据库会怎么去查? 而当我们查询 标题 LI...原创 2020-03-02 11:12:47 · 323 阅读 · 0 评论 -
Solr系列一:Solr(Solr介绍、Solr应用架构、Solr安装使用)
一、前言 前面已经学习了Lucene的分词、索引详解、搜索详解的知识,已经知道开发一个搜索引擎的流程了。现在就会有这样的一个问题:如果其他的系统也需要使用开发的搜索引擎怎么办呢?这个时候就需要把开发的搜索引擎封装成一个组件或者独立成一个单独的服务给其他系统使用了。目前市面上已经有基于Lucene的成熟的稳定的搜索引擎服务,例如Solr和ElasticSearch,如果没有特殊需求我们就可以直...原创 2020-03-03 14:28:55 · 598 阅读 · 0 评论