[Java] Solr & Elasticsearch
背景
- 实现网站自带的搜索功能,如淘宝中的商品搜索
全文搜索
- 数据分类
- 结构化数据:固定格式或长度有限的数据,如数据库、元数据等
- 非结构化数据:不定长或无固定格式的数据,如邮件、word文档等
- 搜索分类
- 结构化数据搜索:关系型数据库
- 非结构化数据搜索:顺序扫描(低效)/全文搜索
- 索引
- 从非结构化数据中提取出的然后重新组织的信息
- 非结构化数据->有一定结构的数据
- 对组织后的数据进行搜索
- 倒排索引
- 存储在全文搜索下某个单词在一个或一组文档中的存储位置的映射
- 文档检索系统中最常用的数据结构
- 场景
- 搜索的数据对象是大量的非结构化的文本数据
- 文件记录量达到数十万或数百万个甚至更多
- 支持大量基于交互式文本的查询
- 需求非常灵活的全文搜索查询
- 对高度相关的搜索结果的有特殊需求,但是没有可用的关系数据库可以满足
- 对不同记录类型、非文本数据操作或安全事务处理的需求相对较少的情况
Lucene
- 全文搜索引擎
- 一个代码库和API
- 思路
- 搜集数据
- 通过数据创建索引
- 用户输入关键字
- 通过关键字创建查询器
- 根据查询器到索引里获取数据
- 把查询结果展示给用户

Solr
- 一种非关系(no sql)数据库搜索/存储引擎
- 封装了Lucene,有HTTP接口
- 可以和Hadoop一起使用
- Hadoop处理大量数据,Solr从中找需要的信息
- 与数据库的区别
- 搜索速度比关系型数据库快,一般在网站中单独处理搜索功能
- 数据库不能实现分词效果,只能用模糊查询,效率很低
- 原理:倒排索引,B+树
- IK Analyzer:开源的java中文分词工具包
elasticsearch
- 封装了Lucene
- 分布式、多租户能力的全文搜索引擎
- 具有HTTP Web页面和无架构JSON文档
- 和Solr相比,更易于使用
参考
Solr介绍
https://blog.csdn.net/luo609630199/article/details/82494708
Solr原理
https://www.liangzl.com/get-article-detail-134667.html
全文搜索 Solr Elasticsearch
https://www.cnblogs.com/jajian/p/9801154.html
Solr Elasticsearch 性能比较
https://blog.csdn.net/jameshadoop/article/details/44905643
[Java] Solr & Elasticsearch的更多相关文章
- 开源搜索引擎solr elasticsearch学习计划
其实不单单是研究solr elasticsearch把,进行调研性技术学习时,应该制定一些目标以及里程碑.新的技术调研 学习是一件很爽的事,能学到新技术新东西.但是在学习新技术同时,有几个问题是需要我 ...
- 使用java操作elasticsearch(1)
1.安装elasticsearch 这儿用的是5.6.9的版本,下载安装过程较为简单,在官网上下载好后解压到文件夹.需要注意的是在elasticsearch-5.6.9\config下的elastic ...
- java使用elasticsearch实现集群管理
本篇博客主要是查看集群中的相关信息,具体请看代码和注释 @Test public void test45() throws UnknownHostException{ //1.指定es集群 clust ...
- java操作elasticsearch实现组合桶聚合
1.terms分组查询 //分组聚合 @Test public void test40() throws UnknownHostException{ //1.指定es集群 cluster.name 是 ...
- java操作elasticsearch实现query String
1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...
- java操作elasticsearch实现聚合查询
1.max 最大值 //max 求最大值 @Test public void test30() throws UnknownHostException{ //1.指定es集群 cluster.name ...
- java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询
1.前缀查询(prefix) //prefix前缀查询 @Test public void test15() throws UnknownHostException { //1.指定es集群 clus ...
- java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)
1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...
- java操作elasticsearch实现查询删除和查询所有
后期博客本人都只给出代码,具体的说明在代码中也有注释. 1.查询删除 //查询删除:将查询到的数据进行删除 @Test public void test8() throws UnknownHostEx ...
随机推荐
- 如何从 dump 文件中提取出 C# 源代码?
一:背景 相信有很多朋友在遇到应用程序各种奇葩问题后,拿下来一个dump文件,辛辛苦苦分析了大半天,终于在某一个线程的调用栈上找到了一个可疑的方法,但 windbg 常常是以 汇编 的方式显示方法代码 ...
- Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
带下拉选项的输入框 (Textbox with Dropdown) 是既允许用户从下拉列表中选择输入又允许用户自由键入输入值.这算是比较常见的一种 UI 元素,可以为用户提供候选项节省操作时间,也可以 ...
- 使用Vanilla框架制作时间倒数器 ——JavaScript
一.制作时间倒数器要求以及思路: 1.首先创建三个输入字段,分别是小时,分钟和秒,以及"开始"按钮.输入的初始值必须为0h 5m 0s.当用户输入小时,分钟和秒并单击" ...
- Spring Boot 2.4 配置文件将加载机制大变化
Spring Boot 2.4.0.M2 刚刚发布,它对 application.properties 和 application.yml 文件的加载方式进行重构.如果应用程序仅使用单个 applic ...
- 【NCRE】三级网络技术 选择题易错点记录(1)
部分易错点 连接到一个集线器的多个节点不能同时发送数据帧 嵌入式安装插座用来连接双绞线 异步串行端口 PPP 同步串行端口 PPP/HPLC 对于频繁改变位置并使用DHCP获取IP地址的DNS客户端, ...
- SpringBoot+Gradle构建多模块项目
1 概述 Gradle由于构建速度比Maven快,且比Maven灵活,因此很多后端的应用都使用了Gradle进行构建,但一个问题是,Gradle的多模块项目比较难构建,再加上Gradle的更新非常快, ...
- Java 8 Optional
这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. package com.polaris; import java.util.A ...
- (数据科学学习手札119)Python+Dash快速web应用开发——多页面应用
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...
- Weekly Contest 184
1408. String Matching in an Array Given an array of string words. Return all strings in words which ...
- 1. Robot Framework入门
RF定义: 通用型的 自动测试框架, 绝大部分的软件的的自动化系统都可以采用它. 特点: 测试数据文件(Test Data)对应一个个的测试用例.测试数据文件里面使用的功能小模块叫关键字,由测试库(T ...