百度、google上查询任何需要的内容信息。这种是通用的搜索。但是百度只是一个通用的搜索引擎,并不等于搜索。
垂直搜索(站内搜索): 在指定领域或内容区域搜索内容,
互联网的搜索:
比如淘宝,拉钩,今日头条等。
IT系统的搜索:
OA软件,办公自动化软件,会议管理,日程管理,项目管理等。
搜索:就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你想要的关键字,然后就期望找到这个关键字相关的信息。
关系型数据库: RDBS
select * from a where product_name LIKE "%关键字%"
上面,如果没有做索引的话,就会每条记录都会去查询匹配。
建了索引的,可以提高查询的效率,随着数据的增加的,时间也会增加。
另外一个问题,如果关键词是严格匹配的。不能将搜索词拆分开来。尽可能去搜索更多的符合预期的结果。
缓存型数据库: NOSQL
倒排索引:
词条,索引
全文检索:
倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。
倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。
(2)Lucene,就是一个jar包,里面封装好的各种倒排索引,以及进行搜索的代码,包括各种算法。我们就用java开发的时候,引入lucene jar,然后基于lucene进行开发就可以了。用lucene,我们就可以将已有的数据建立缩影,lucene会在本地磁盘上面,给我们组织缩影的数据结构,另外的话,我们也可以用lucene提供的功能和api来针对磁盘上额。
Lucene是封装了搜索引擎大的功能。
数据量很大的,多台服务器上存放数据,
数据量很大的时候,超过单台机器的承受的能力。必须用多台的机器的搜索和管理。
1.数据丢失
如何高性能的建立索引,以及执行搜索
特点:
1.自动维护数据的分布到多个节点的索引的建立,还有搜索请求分布到多个节点的执行。
2.自动维护数据的冗余副本,保证说,一些机器的宕机了,不会丢失任何数据。
3.封装了更多的高级功能,以给我们提供更多高级的支持,让我们快速的开发应用,开发更加复杂的应用。
1. Lucene和es的前世今生
2. es的核心概念
3. es的核心概念 vs 数据库核心概念
lucene,最先进、功能最强大,基于lucene开发非常复杂,api复杂(实现一些简单的功能,写大量的java代码),需要深入理解原理(各种索引结构)
ES,基于lucene,隐藏了复杂性,提供了简单易用的restful api接口、java api接口(还有其他语言的api接口)
开箱即用,优秀的默认参数,不需要任何额外设置,完全开源。
{
name: "JmyvpeE",
cluster_name: "elasticsearch_youdi",
cluster_uuid: "spAvb2wnQe-xVghYxleJ5A",
version: {
number: "6.2.4",
build_hash: "ccec39f",
build_date: "2018-04-12T20:37:28.497551Z",
build_snapshot: false,
lucene_version: "7.2.1",
minimum_wire_compatibility_version: "5.6.0",
minimum_index_compatibility_version: "5.0.0"
},
tagline: "You Know, for Search"
}
ES特点之一就是开箱即用 http://127.0.0.1:9200?pretty
{
name: "JmyvpeE",
cluster_name: "elasticsearch_youdi",
cluster_uuid: "spAvb2wnQe-xVghYxleJ5A",
version: {
number: "6.2.4",
build_hash: "ccec39f",
build_date: "2018-04-12T20:37:28.497551Z",
build_snapshot: false,
lucene_version: "7.2.1",
minimum_wire_compatibility_version: "5.6.0",
minimum_index_compatibility_version: "5.0.0"
},
tagline: "You Know, for Search"
}
name: node名称 cluster_name 集群名称
ES的配置文件
修改集群名称:elastic search.yml