Elasticsearch-04 ES中的术语和基本用法

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch-04 ES中的术语和基本用法

20190806092132811.jpg

概述


有时候对象不仅仅只是简单的键值列表, 更多时候它拥有复杂的数据结构, 比如包含日期、 地理位置、 另一个对象或者数组。


将这些数据保存到由行和列组成的关系数据库中, 就好像是把一个丰富的对象拆散了放入一个非常大的表格中:你不得不拆散对象以适应表模式(通常一列表示一个字段) , 然后又不得不在查询的时候重建它们。


Elasticsearch是面向文档(document oriented)的, 这意味着它可以存储整个对象或文档即document


然而它不仅仅是存储, 还会索引(index)每个文档的内容使之可以被搜索


在Elasticsearch中, 你可以对文档(而非成行成列的数据) 进行索引、 搜索、 排序、 过滤。这也是Elasticsearch能够执行复杂的全文搜索的原因之一


Elasticsearch使JSON 作为文档序列化格式。


术语


  • 索引:含有相同属性的文档集合 ,相当于关系型数据库中的database
  • 类型:索引可以定义一个或多个类型,文档必须属于一个类型,相当于table
  • 文档:文档是可以被索引的基本数据单位 ,相当于一条记录
Elasticsearch -> Indexes-> Types -> Documents -> Fields
Relational DB -> Databases -> Tables -> Rows -> Columns

和索引相关的有“分片”和“备份”


分片:每个索引都有多个分片,每个分片是一个Lucene索引

假如一个索引数据量很大,就会产生硬盘压力很大。所以就要‘分片’来分担压力。可以水平的扩展和拆分以及分布式的操作,可以提高搜索和其他操作


备份:拷贝一份分片就完成了分片的备份

当一个主分片失败或出现问题时,"备份分片"就可以代替工作,从而提高了ES的可用性,备份的分片还可以执行搜索的操作,来分摊搜索的压力。


ES创建索引时默认创建5个分片一个备份 , 分片的数量只能在创建索引时指定,备份可以动态修改


索引命名规范:字母小写,且不含中划线


基本用法


使用RESTful API, 通过9200端口的与Elasticsearch进行通信

http://<ip>:<port>/<索引>/<类型>/<文档id>


HTTP方法:

GET , POST , PUT , HEAD , DELETE


创建索引

非结构化创建

20190419121056621.png


20190419121355903.png

粗线框代表主分片,对应的相同数字的细线框则代表备份,我们创建book索引的时候,默认5个分片(0,1,2,3,4) 以及一个备份 ,如上所示。

怎么确定是非结构化的呢?



20190419121903884.png

结构化的关键词 mappings,为空说明为非结构化,并没有结构映射的信息。


结构化创建

{
  "novel": {
    "properties": {
      "title": {
        "type": "text"
      }
    }
  }
}


20190419122949834.png


点击Request,返回成功后,回到overview刷新下索引,查看索引信息如下

20190419123041461.png

在web页面书写json没有提示,很容易出错,这里我们通过postman来新建一个索引吧

{
  "settings":{
    "number_of_shards":3,
    "number_of_replicas":1
  },
  "mappings":{
    "man":{
      "properties":{
        "name":{
          "type":"text"
        },
        "country":{
          "type":"keyword"
        },
        "age":{
          "type":"integer"
        },
        "date":{
          "type":"date",
          "format":"yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || epoch_millis"
        }
      }
    },
    "woman":{
    }
  }
}


时间格式 epoch_millis为时间戳格式


20190419124154624.png


body为json格式, 请求方法为put , 请求url为 http://localhost:9200/people

返回结果:

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "people"
}



通过head插件查看结果,刷新下



20190419124245613.png


查看索引信息如下


20190419124335913.png


官方API文档


当前版本 7.0 : https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html


5.6的版本的: https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html


插入

我们往 people 这个索引中的 man类型里写入一条数据即文档

指定文档id插入(PUT方法)

{
  "name":"artisan",
  "country":"china",
  "age":18,
  "date":"2019-04-19"
}



20190419125352574.png


PUT 方法

http://localhost:9200/people/man/1 -->" ip:port/索引/类型/文档id

到head插件中查看下数据



20190419125742286.pngid=1 ,是我们自己指定的

指定生成文档id插入 (POST方法)



20190419130015503.png


POST 方法

RestFul 请求中仅指定 索引和类型即可,无需指定id,es自动生成id

在head插件中刷新下,通过Brower浏览数据如下


20190419130124606.png


修改

直接修改文档


20190419215409354.png


URL: http://localhost:9200/people/man/1/_update 指定id ,注意后面要跟上“_update”

方法: POST

修改内容

“doc”:{
   需要修改的信息
}


head插件查看修改后的数据


20190419215557407.png


脚本修改文档

{
  "script":{
    "lang":"painless",
    "inline":"ctx._source.age += 10"
  }
}


20190419220541283.png

20190419220603901.png


或者,将参数放在外面指定,比如

{
  "script":{
    "lang":"painless",
    "inline":"ctx._source.age = params.age",
    "params":{
      "age":99
    }
  }
}


20190419220831546.png


删除

删除Document 文档

URL : http://localhost:9200/people/man/1/ ,删除id=1的文档

方法: DELETE


20190419221215599.png


通过head插件查看,刚才id=1的数据已经被删掉了


20190419221317194.png



删除 index 索引

方式一: web页面中删除

20190419221450214.png


20190419221529778.png



索引被删除后,索引中的数据将一并被删除 ,请谨慎操作。

方式二: 通过postman ,


20190419221637743.png


方法: DELETE, url : http://ip:port/index

通过head插件查看


20190419221705228.png

查询


另开篇介绍,见ElasticSearch-05ElasticSearch之查询与过滤


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
3月前
|
数据可视化 Java Windows
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
本文介绍了如何在Windows环境下安装Elasticsearch(ES)、Elasticsearch Head可视化插件和Kibana,以及如何配置ES的跨域问题,确保Kibana能够连接到ES集群,并提供了安装过程中可能遇到的问题及其解决方案。
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
|
5月前
|
存储 自然语言处理 算法
面试题ES问题之Solr和Elasticsearch功能实现如何解决
面试题ES问题之Solr和Elasticsearch功能实现如何解决
65 2
|
2月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
219 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
7月前
|
Oracle 关系型数据库 API
实时计算 Flink版产品使用合集之当sink到elasticsearch时,可以指定es的指定字段吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
实时计算 Flink版产品使用合集之当sink到elasticsearch时,可以指定es的指定字段吗
|
2月前
|
自然语言处理 搜索推荐 Java
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(一)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图
58 0
|
2月前
|
存储 自然语言处理 搜索推荐
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
40 0
|
3月前
|
JSON 自然语言处理 数据库
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
概念、ik分词器、倒排索引、索引和文档的增删改查、RestClient对索引和文档的增删改查
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
|
5月前
|
负载均衡 监控 搜索推荐
面试题ES问题之Solr和Elasticsearch在分布式管理上如何解决
面试题ES问题之Solr和Elasticsearch在分布式管理上如何解决
43 1
|
4月前
|
自然语言处理 Java 索引
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 文档操作
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 文档操作
46 0
|
4月前
|
自然语言处理 Java 索引
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作
49 0