Elasticsearch索引的操作,利用kibana 创建/删除一个es的索引及mapping映射

索引的创建及删除

1. 通过索引一篇文档创建了一个新的索引 。这个索引采用的是默认的配置,新的字段通过动态映射的方式被添加到类型映射。

利用Kibana提供的DevTools来执行命令,要创建一个索引

put /sdb  (其中sdb为一个索引)

扫描二维码关注公众号,回复: 9363682 查看本文章

创建成功后会返回如下结果

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

如果你想禁止自动创建索引,你 可以通过在 config/elasticsearch.yml 的每个节点下添加下面的配置:

action.auto_create_index: false

{
  "sdb" : {
    "aliases" : { },
    "mappings" : { },
    "settings" : {
      "index" : {
        "creation_date" : "1552621484634",
        "number_of_shards" : "5",         //每个索引的主分片数,默认值是 5 。这个配置在索引创建后不能修改。
        "number_of_replicas" : "1",   //每个主分片的副本数,默认值是 1 。对于活动的索引库,这个配置可以随时修改。
        "uuid" : "PQ1TSt5hQOua_cUAegrYmw",
        "version" : {
          "created" : "6060299"
        },
        "provided_name" : "sdb"
      }
    }
  }

}

如果想修改副本数,可以用 update-index-settings API 动态修改副本数:

PUT /sdb/_settings
{
    "number_of_replicas": 1
}

 再次使用GET /sdb进行查看

 上面我们说了如何创建一个索引,那么接下来我们来说说如何删除一个索引

DELETE /sdb 

删除成功后会有以下提示:

{
  "acknowledged" : true
}

mapping映射

映射是创建索引的时候,可以预先定义字段的类型以及相关属性

Elasticsearch会根据JSON源数据的基础类型去猜测你想要的字段映射。将输入的数据变成可搜索的索引项。Mapping就是我们自己定义字段的数据类型,同时告诉Elasticsearch如何索引数据以及是否可以被搜索。

 作用:会让索引建立的更加细致和完善

 类型:静态映射和动态映射

静态映射

动态映射

什么是动态映射

文档中碰到一个以前没见过的字段时,动态映射可以自动决定该字段的类型,并对该字段添加映射

如何配置动态映射

  1. 通过dynamic属性进行控制
  2. true:默认值,动态添加字段; false:忽略新字段; strict:碰到陌生字段,抛出异常

适用范围

适用在根对象上或者object类型的任意字段上

内置类型

string类型: text,keyword(string类型在es5已经被弃用)

数字类型:long, integer, short, byte, double, float

日期类型: date

bool类型: boolean

binary类型: binary  

复杂类型: object ,nested

geo类型: point , geo-shape

专业类型: ip, competion

mapping 限制的type

 

创建mapping

PUT lagou
{
  "mappings": {
    "job":{
      "properties": {
        "title":{
          "type":"text"
        },
        "salary_min":{
          "type":"integer"
        },
        "city":{
          "type": "keyword"
        },
        "company":{
          "properties": {
            "name":{
              "type":"text"
            },
            "company_addr":{
              "type":"text"
            },
            "employee_count":{
              "type":"integer"
            }
          }
        },
        "publish_date":{
          "type":"date",
          "format": "yyyy-MM-dd"
        },
        "comments":{
          "type": "integer"
        }
      }
    }
  }
}

PUT lagou/job/1
#当类型不符合的时候他会尝试去转换类型,比如字符串的数字和数字类型,但是如果无法转换就会报错。

{
  "title":"python分布式web开发",
  "salary_min":15000,
  "city":"北京",
  "company":{
    "name":"百度",
    "company_addr":"软件园",
    "employee_count":50
  },
  "publish_date":"2017-4-16",
  "comments":15
}

#获取映射

GET lagou/_mapping

GET lagou/_mapping/job  

GET _all/_mapping/job

猜你喜欢

转载自www.cnblogs.com/xiaozengzeng/p/12355237.html