zoukankan      html  css  js  c++  java
  • ES(ElasticSearch) 索引创建

    此文转载自:https://my.oschina.net/u/4479011/blog/4755134

    环境: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

     

       

    更多内容详见微信公众号:Python测试和开发

    Python测试和开发

  • 相关阅读:
    很特别的一个动态规划入门教程
    很特别的一个动态规划入门教程
    很特别的一个动态规划入门教程
    很特别的一个动态规划入门教程
    57.深度优先搜索 广搜练习:迷宫(未结题)
    UPC10525: Dove 打扑克
    UPC10532: 花
    UPC10544: 凉宫春日的叹息
    UPC3459: 移除字符
    UPC3457: Next K Permutation
  • 原文地址:https://www.cnblogs.com/phyger/p/14048310.html
Copyright © 2011-2022 走看看