elasticSearch整理

本文详细介绍了ElasticSearch的基础概念,包括它作为开源搜索引擎的角色,以及与Lucene的关系。内容涵盖ElasticSearch的使用场景、Near Realtime(NRT)特性、集群与节点、索引与类型、文档、映射、分词、分片与副本等核心概念。还深入探讨了ES的搜索功能,如全文检索、Term level Query、Bool Query、Geo Query、聚合分析以及PHP客户端的使用。同时,文章讨论了ES的数据写入和读取过程,以及性能优化策略。最后,提供了丰富的ElasticSearch使用示例,包括查询和聚合操作。
摘要由CSDN通过智能技术生成

基础概念

ElasticSearch是什么?

  • Elasticsearch是一个开源的搜索引擎,基于全文搜索引擎库Lucene。
  • Lucene是一个开源的全文搜索引擎库,但Lucene非常复杂,普通玩家玩不了。为了隐藏Lucene的复杂性,Elasticsearch在Lucene的基础上进行了封装,提供了一套简单一致的RESTful API,提供了分布式存储,提供了准实时的分析引擎和搜索引擎。

ElasticSearch的使用场景

Near Realtime(NRT)

  • ES基本上可以做到实时搜索,从数据写入ES到可搜索到该数据,延迟大概是1秒左右(这个数值可以配置)

Cluster && Node

  • 集群和节点。
  • ES是一个分布式的系统,可以通过增加新的服务器,非常便捷的进行横向扩展。
  • 每个ES运行实例称为一个Node节点。
  • 多个ES节点组成一个集群。集群中有有一个Master节点,该节点是动态选举出来的,一旦当前的Master节点宕机了,集群会自动选举出新的Master节点。

Index && Type

  • 索引。
  • 索引是ES中数据的容器。概念上,索引类似mysql中的database。
  • 索引下可以有多个Type,Type的概念类似mysql中的table。
  • 但是,需要谨记的是,Type跟mysql中的table有很大不同,体现在:
    • 1) 同一个index下的所有type,应该具备相似属性
    • 2) 同一个index下,不同的type中的字段,如果字段同名,那么这些字段应该是同一类型的
    • 3) ES中有许多优化和操作,都是基于index的
    • 4) 在以后的ES版本中,可能会去掉Type的概念

Document

  • 文档。
  • ES中的文档,在概念上相当于mysql的row,但比row更灵活。
  • ES中的文档是一个JSON对象,即使在同一个type中,不同的document的字段可以不一样。也允许动态增加新的字段。文档中每个字段有固定的类型,包括整数、日期、文本等等,甚至可以嵌套JSON对象。

Mapping

  • 相当于mysql中的schema(即表的结构定义),用来规定文档中的字段类型
  • 但要注意的是,已经创建的索引,不能变更字段的类型。
  • 字段的类型很丰富,除了常规的数字、日期、字符串之外,还可以是GEO-Point、GEO-shape、IP

Analyze && Term

  • 分词。
  • 对一段文本(text)进行分词处理,得出一系列的词(token)。
  • ES除了会对存储的字段进行分词处理外,在搜索的时候,也会对搜索的文本进行分词处理。
  • ES中内置有很多分词器,比较常见的有standard、whitespace、english等等。对于中文分词,则常用ik。
  • 我们在mapping中,可以指定字段的分词器。
  • 一个分词,在ES中,通常称之为一个Term。
  • 中文分词示例
  • curl -X GET "localhost:9200/_analyze" -H 'Content-Type: application/json' -d'

    {

    "analyzer" : "ik_max_word",

    "text" : "中华人民共和国,我的祖国,我爱你!!!”

    }

    '

Shards && Replicas

  • shard:分片
  • replica:分片的副本
  • shards和replicas是ES分布式能力的体现,虽然对用户来说是透明的,但理解它们,有助于你理解ES的查询和聚合结果

Shard

  • 一个index所包含的数据可以非常的大(TB级别),通常一台单独的机器是无法承载的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值