page contents

ES(ElasticSearch) 索引创建

索引是ElasticSearch存放数据的地方,可以理解为关系型数据库中的一个数据库。事实上,我们的数据被存储和索引在分片(shards)中,索引只是一个把一个或多个分片分组在一起的逻辑空间。然而,这只是一些内部细节——我们的程序完全不用关心分片。

attachments-2020-11-xcHfYcKc5fc0a062627b0.png

环境:ES 6.2.2

os:Centos  7

kibana:6.2.2


介绍

  • 索引是ElasticSearch存放数据的地方,可以理解为关系型数据库中的一个数据库。事实上,我们的数据被存储和索引在分片(shards)中,索引只是一个把一个或多个分片分组在一起的逻辑空间。然而,这只是一些内部细节——我们的程序完全不用关心分片。对于我们的程序而言,文档存储在索引(index)中。剩下的细节由Elasticsearch关心既可。(索引的名字必须是全部小写,不能以下划线开头,不能包含逗号)
  • 类型用于区分同一个索引下不同的数据类型,相当于关系型数据库中的表。在Elasticsearch中,我们使用相同类型(type)的文档表示相同的“事物”,因为他们的数据结构也是相同的。每个类型(type)都有自己的映射(mapping)或者结构定义,就像传统数据库表中的列一样。所有类型下的文档被存储在同一个索引下,但是类型的映射(mapping)会告诉Elasticsearch不同的文档如何被索引。
  • 文档是ElasticSearch中存储的实体,类比关系型数据库,每个文档相当于数据库表中的一行数据。在Elasticsearch中,文档(document)这个术语有着特殊含义。它特指最顶层结构或者根对象(root object)序列化成的JSON数据(以唯一ID标识并存储于Elasticsearch中)。
  • 文档由字段组成,相当于关系数据库中列的属性,不同的是ES的不同文档可以具有不同的字段集合。对比关系型数据库:


文档元数据

一个文档不只有数据。它还包含了元数据(metadata)——关于文档的信息。三个必须的元数据节点是:

attachments-2020-11-zh6keQ2Q5fc0a08362432.jpg

_index:索引

_type:类型

_id:id仅仅是一个字符串,它与_index和_type组合时,就可以在Elasticsearch中唯一标识一个文档。当创建一个文档,你可以自定义_id,也可以让Elasticsearch帮你自动生成。


索引创建原则

类似的数据放在一个索引,非类似的数据放不同索引:product index(包含了所有的商品),sales index(包含了所有的商品销售数据),inventory index(包含了所有库存相关的数据)。如果你把比如product,sales,human resource(employee),全都放在一个大的index里面,比如说company index,不合适的。

index中包含了很多类似的document:类似是什么意思,其实指的就是说,这些document的fields很大一部分是相同的,你说你放了3个document,每个document的fields都完全不一样,这就不是类似了,就不太适合放到一个index里面去了。

索引名称必须是小写的,不能用下划线开头,不能包含逗号:product,website,blog


1、创建新的索引(index)

PUT indexTest001

结果:

attachments-2020-11-Xr9rr03P5fc0a093182fa.png


2、索引设置

ES 默认提供了好多索引配置选项,参考https://www.elastic.co/guide/...,这些配置选项都有经过优化的默认配置值,除非你非常清楚这些配置的作用以及知道为什么去修改它,不然使用其默认值即可。

a、分片设置

number_of_shards

每个索引的主分片数,默认值是 5 。这个配置在索引创建后不能修改。

number_of_replicas

每个主分片的副本数,默认值是 1 。对于活动的索引库,这个配置可以随时修改。

例如,我们可以创建只有 一个主分片,没有副本的小索引:

PUT /my_test_index_004

 {
 "settings": {
 "number_of_shards" :   1,
 "number_of_replicas" : 0
 }
 }

更改副本数量:

PUT /my_test_index_004/_settings

 {
 "number_of_replicas": 2
 }

每次更改分片之后可以使用:GET my_test_index_004/_search_shards 来查询索引信息.


3、创建mapping

a、首先查看刚刚创建的索引的mapping是什么样子的

GET indextest001/_mapping

结果:

attachments-2020-11-zpKh7DlK5fc0a0a4dde01.png

可见新建的索引中,mapping是一个空集,所以我们就要创建这个index的mapping

命令:

 POST indextest001/product/_mapping?pretty
 {"product":{"properties":{"title":{"type":"text","store":"true"},"description":{"type":"text","index":"false"},"price":{"type":"double"},"onSale":{"type":"boolean"},"type":{"type":"integer"},"createDate":{"type":"date"}}}}

执行完毕后再次执行上面所述查询结果如下:

attachments-2020-11-Y0jub2Um5fc0a0b7957d8.png


4、插入数据

POST indextest001/product

{
 "title": "test title 001",
 "description": "this is a random desc ",
 "price": 22.6,
 "onSale": "true",
 "type": 2,
 "createDate": "2018-01-12"
}

然后查询一下所有数据,默认为match_all

GET indextest001/product/

根据id查询

GET indextest001/product/UNBdGWIBI2NcsxokJ0lQ

结果如下:

attachments-2020-11-QdqAIewW5fc0a0c631f6e.png


attachments-2020-11-48PDLrir5fc0a0d1bdf52.jpg原文:https://www.cnblogs.com/xiaozengzeng/p/12347947.html

  • 发表于 2020-11-27 14:44
  • 阅读 ( 422 )
  • 分类:操作系统

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1135 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1320 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章