Elastic Search

Posted harderyao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elastic Search相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

hids Elastic Security 系列1-Elastic Security介绍

hids Elastic Security 系列1-Elastic Security介绍

Elastic:如何使用 Elastic 机器学习来侦测异常

Elastic:如何使用 Elastic 机器学习来侦测异常

elastic 线程池设置解决logstash-429

Elastic:Fluentd 在 Elastic Stack 中的运用