码迷,mamicode.com
首页 > 其他好文 > 详细

Elastic Search

时间:2018-10-31 15:35:41      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:地理位置   数据存储   指定   请求   查询   删除   修改   数据   文本   

Elastic Search 是一种分布式,高性能,高可用,可伸缩的搜索和分析系统

1.为什么不能纯用数据库搜索?

如:执行select * from students where name like ‘%张三%‘

  • 数据库会一条一条的扫描
  • 每条记录指定字段的文本可能很长,对这些文本一一扫描判断是否包含所需的关键字,效率很低
  • 另外,包含“张小三“的结果搜索不出来

另外如果数据量很大,超过了一台机器的容量,此时就必须使用多台机器进行数据存储,我们自己实现的话很麻烦,ES运营而生:

  • 自动维护数据分布到多个节点的索引的简历,还有搜索请求分布到多个节点的执行
  • 自动维护数据的冗余副本,保证一些机器宕机了,也不会丢失任何数据
  • 封装很多高级功能,让我们能快速开发应用和开发更加复杂的应用:复杂的搜索功能,聚合分析的功能,基于地理位置的搜索(例如距离我当前位置1公里以内的烤肉店)

 

2.ES中的基本概念

ES里有document、type、index概念,分别相当于数据库中的行、表和数据库。
            Index<------->数据库
            Type<------->表
            Document<------->行

另外ES存放数据的节点有shard(primary shard)和replica(replica shard):

  • replica上存放的是shard上的数据副本,提供高可用性,提供了搜索这类请求的吞吐量和性能。
  • shard的数量在建立索引时配置,之后不能修改,默认为5个。replica 的数量可随时修改,默认1个shard对应1个 replica。一个shard可以对应一个或多个replica,每个shard和其对应的replica不能在同一节点上,所以一般配置两台服务器,每台服务器上均放置一部分shard和一部分replica。

 

3.ES使用

应用系统的数据结构都是面向对象的,复杂的 ,对象数据存储到数据库中,只能拆解开来,变成扁平的多张表(如一对多),每次查询出结果后还要再还原回原来的对象数据格式。

ES是面向文档(document)的,文档中存储的数据结构与面向对象的数据结构是一样的,基于这种文档数据格式,ES可以提供复杂的索引,全文检索,分析聚合等功能。ES 的 document 用json数据格式来表达。

3.1 简单的索引操作

  • 创建索引:PUT /db_index?pretty
  • 删除索引:DELETE /db_index?pretty
  • 快速查看集群中有哪些索引:GET /_cat/indices?v

 

Elastic Search

标签:地理位置   数据存储   指定   请求   查询   删除   修改   数据   文本   

原文地址:https://www.cnblogs.com/HarderYao/p/9882866.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!