zoukankan      html  css  js  c++  java
  • Elasticsearch索引的操作,利用kibana 创建/删除一个es的索引及mapping映射

    索引的创建及删除

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

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

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

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

    {
      "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":{       //title 字段
              "type":"text"   //类型设置,text类型可分词
            },
            "salary_min":{
              "type":"integer"
            },
            "city":{
              "type": "keyword"   //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
  • 相关阅读:
    Javascript、C#、php、asp、python 等语言的链式操作的实现
    根据C# 事件思想来实现 php 事件
    initerrlog: 无法打开错误日志文件 'D:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLLog 解决办法
    64位直接加载个img 标签的src
    各种脚本语言变量作用域总结
    数据库设计14个技巧【转】
    基于Jquery 简单实用的弹出提示框
    C# dll 事件执行 js 回调函数
    php 配置xdebug
    sqlserver 构架与性能优化
  • 原文地址:https://www.cnblogs.com/xiaozengzeng/p/12355237.html
Copyright © 2011-2022 走看看