效率人生码农的世界大数据

ElasticSearch介绍

2018-06-25  本文已影响37人  若与
  1. 什么是搜索?

  2. 如果使用数据库做搜索会怎样?

  3. 什么是全文检索和Lucene

  4. 什么是ElasticSearch?

1. 什么是搜索?

百度、google上查询任何需要的内容信息。这种是通用的搜索。但是百度只是一个通用的搜索引擎,并不等于搜索。

垂直搜索(站内搜索): 在指定领域或内容区域搜索内容,

互联网的搜索:

​ 比如淘宝,拉钩,今日头条等。

IT系统的搜索:

​ OA软件,办公自动化软件,会议管理,日程管理,项目管理等。

搜索:就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你想要的关键字,然后就期望找到这个关键字相关的信息。

2. 如果使用数据库做搜索会怎样?

关系型数据库: RDBS

select * from a where product_name LIKE "%关键字%"

上面,如果没有做索引的话,就会每条记录都会去查询匹配。

建了索引的,可以提高查询的效率,随着数据的增加的,时间也会增加。

另外一个问题,如果关键词是严格匹配的。不能将搜索词拆分开来。尽可能去搜索更多的符合预期的结果。

缓存型数据库: NOSQL

3. 全文检索和Lunence

倒排索引:

词条,索引

全文检索:

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。

(2)Lucene,就是一个jar包,里面封装好的各种倒排索引,以及进行搜索的代码,包括各种算法。我们就用java开发的时候,引入lucene jar,然后基于lucene进行开发就可以了。用lucene,我们就可以将已有的数据建立缩影,lucene会在本地磁盘上面,给我们组织缩影的数据结构,另外的话,我们也可以用lucene提供的功能和api来针对磁盘上额。

Lucene是封装了搜索引擎大的功能。

4.什么是ElasticSearch?

数据量很大的,多台服务器上存放数据,

  1. 数据的搜索

  2. 高可用

数据量很大的时候,超过单台机器的承受的能力。必须用多台的机器的搜索和管理。

1.数据丢失

如何高性能的建立索引,以及执行搜索

特点:

1.自动维护数据的分布到多个节点的索引的建立,还有搜索请求分布到多个节点的执行。

2.自动维护数据的冗余副本,保证说,一些机器的宕机了,不会丢失任何数据。

3.封装了更多的高级功能,以给我们提供更多高级的支持,让我们快速的开发应用,开发更加复杂的应用。

ElasticSearch介绍

  1. ES功能

  2. 使用场景

  3. 特点

1. ES的功能

  1. 分布式的搜索引擎和数据分析引擎

    搜索,百度,网站的站内搜索,IT系统检索,数据分析 分布式、搜索、数据分析

  2. 全文检索、结构化检索、数据分析

    全文检索: 查询所有商品的包含mac的商品 select * from products where product_name like "%mac%"

    结构化搜索

    部分匹配、自动完成、搜索纠错、搜索推荐

    数据分析:数据统计、聚合等

  3. 对海量数据进行近实时的处理

    分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索。

    海量数据的处理,分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然可以实现海量数据的处理。

    近实时:检索一个数据 (离线数据批处理 batch-processing)

2. ES的适用场景

3. ES特点

  1. 可以作为一个大型的分布式集群(数百台服务器)技术,处理PB级数据,服务大公司,可以运行在单机上,服务小公司。

  2. ES不是什么新技术,主要是将全文检索、数据分析以及分布式技术合并在一起,才形成了独一无二的ES.lucene(全文检索)、商用的数据分析软件、分布式数据库 (mycat)

  3. 对用户而言,是开箱即用,非常简单,作为中小型的应用,直接3分钟部署ES,就可以作为生产环境的系统使用,数据量不大,操作不是很复杂。

  4. 数据库的功能面对很多领域是不够用的(事务,还有各种联机事务的操作):特殊的功能,比如全文检索、同义词处理、相关度排名、复杂数据分析、海量数据近实时处理;ES作为传统数据库的一个补充,提供了数据库所不能提供的很多功能。

ES的核心概念

1.  Lucene和es的前世今生

2.  es的核心概念

3.  es的核心概念 vs 数据库核心概念

1. lucene和ES的前世今生

lucene,最先进、功能最强大,基于lucene开发非常复杂,api复杂(实现一些简单的功能,写大量的java代码),需要深入理解原理(各种索引结构)

ES,基于lucene,隐藏了复杂性,提供了简单易用的restful api接口、java api接口(还有其他语言的api接口)

开箱即用,优秀的默认参数,不需要任何额外设置,完全开源。

2. ES的核心概念

{
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的安装和使用

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
上一篇下一篇

猜你喜欢

热点阅读