全文检索技术Elasticsearch

1 Elasticsearch是什么

Elasticsearch是一个分布式的Restfull风格的搜索和数据分析引擎,他有以下特点:

  • 分布式:无需人工搭建集群,会自动扩展
  • Restful风格,一切API都遵循Rest原则,容易上手
  • 实时搜索,数据更新在Elasticsearch中几乎是完全同步的。

为什么说Elasticsearch是近乎实时的呢?

         Elasticsearch和磁盘之间还有一层称为FileSystem Cache的系统缓存,正是由于这层cache的存在才使得es能够拥有更快搜索响应能力。
         在Elasticsearch中新增的document(相当于数据库的行)会被收集到indexing buffer(索引,相当于数据库)区后被重写成一个segment然后直接写入filesystem cache中,这个操作是非常轻量级的,相对耗时较少,之后经过一定的间隔或外部触发后才会被flush到磁盘上,这个操作非常耗时。但只要sengment文件被写入cache后,这个sengment就可以打开和查询,从而确保在短时间内就可以搜到,而不用执行一个full commit也就是fsync操作,这是一个非常轻量级的处理方式而且是可以高频次的被执行,而不会破坏Elasticsearch的性能。
         默认情况下,每隔1秒自动refresh一次,这就是我们为什么说es是近实时的搜索引擎而不是实时的,也就是说给索引插入一条数据后,我们需要等待1秒才能被搜到这条数据,这是es对写入和查询一个平衡的设置方式,这样设置既提升了es的索引写入效率同时也使得es能够近实时检索数据。
参考资料:为什么说Elasticsearch搜索是近实时的?

2 索引

Elasticsearch和MySQL的对比关系

索引(indices)--------------------------------Databases 数据库
类型(type)------------------------------------Table 数据表
文档(Document)----------------------------Row 行
字段(Field)-----------------------------------Columns 列

  • 数据库里面的每一商品数据就可以称为一个文档
  • 商品名称这一,就可以称为一个字段
概念 说明
索引库(indices) indices是index的复数,代表许多的索引,
类型(type) 类型是模拟mysql中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同。不过这会导致索引库混乱,因此未来版本中会移除这个概念
文档(document) 存入索引库原始的数据。比如每一条商品信息,就是一个文档
字段(field) 文档中的属性
映射配置(mappings) 字段的数据类型、属性、是否索引、是否存储等特性

2.1 对索引的操作

增:
Elasticsearch采用Rest风格API,因此其API就是一次http请求

创建索引的请求格式:

  • 请求方式:PUT

  • 请求路径:/索引库名

  • 请求参数:json格式:

{
   
    "settings": {
   
        "number_of_shards": 3,
        "number_of_replicas": 2
    }
}

查:

GET /索引库名

删:

DELETE /索引库名

2.2 映射的配置

索引有了,接下来肯定是添加数据。不过数据存储到索引库中,必须指定一些相关属性,比如:

  • 字段的数据类型
  • 是否要存储
  • 是否要索引
  • 是否分词
  • 分词器是什么

创建映射:PUT

PUT /索引库名/_mapping/类型名称
{
  "properties": {
    "字段名": {
      "type": "类型",
      "index": true,
      "store": true,
      "analyzer": "分词器"
    }
  }
}

查看映射:

GET /索引库名/_mapping

2.3 对数据的操作

增:
通过POST请求,可以向一个已经存在的索引库中添加数据。
随机产生数据id:

POST /索引库名/类型名
{
    "key":"value"
}

自定义id:

POST /索引库名/类型/id值
{
    ...
}

改:
请求方式为put,不过修改必须指定id。

  • id对应文档存在,则修改
  • id对应文档不存在,则新增
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值