Elasticsearch 创建以及修改索引结构

从问题出发,这篇内容可以解决以下几个问题:

一:如何开启关闭Es索引(数据库)?

二:如何创建索引(数据库)结构?

三:如何向已有索引(数据库)中添加类型(表)结构?

四:如何向已有类型(表)中添加新字段?

五:如何更改现有类型(表)中的字段类型?

六:如何删除索引(数据库)?

七:如何删除索引中某一个类型结构(同时删除数据以及数据结构)?

八:如何删除索引中某一类型结构的全部数据而不删除类型结构?

九:为什么同一索引下不同类型的结构如果字段名称相同会报错?

十:创建索引结构时注意事项以及问题?

 

一:如何开启关闭Es索引(数据库)?

关闭索引

POST /my_index/_close    

开启索引

POST /my_index/_open 

 

二:如何创建索引(数据库)结构?

PUT twitter 
{
  "mappings": {
    "tweet": {
      "properties": {
        "message": {
          "type": "text"
        }
      }
    }
  }
}

 

三:如何向已有索引(数据库)中添加类型(表)结构?

PUT twitter/_mapping/user 
{
  "properties": {
    "name": {
      "type": " keyword"
    }
  }
}

 

四:如何向已有类型(表)中添加新字段?

PUT twitter/_mapping/tweet 
{
  "properties": {
    "user_name": {
      "type": " keyword"
    }
  }
}

 

五:如何更改现有类型(表)中的字段类型?

   无法更改;

 

六:如何删除索引(数据库)?

  参考链接:https://www.cnblogs.com/Rawls/p/10110743.html

 

七:如何删除索引中某一个类型结构(同时删除数据以及数据结构)?

  Elasticsearch不支持删除一个Type;

  参考链接:https://blog.csdn.net/youzhouliu/article/details/79940729

 

八:如何删除索引中某一类型结构的全部数据而不删除类型结构?

POST /testindex/testtype/_delete_by_query?pretty
{
    "query": {
        "match_all": {
        }
    }
}

 

九:为什么同一索引下不同类型的结构如果字段名称相同会报错?

  这个问题比较坑,什么意思呢?用我们使用关系型数据库的逻辑来说,就是同一个数据库里面,如果有两个不同的表,表里面都有name字段,

  如果A表中name是varchar类型,B表中name是int类型,完了,这就没办法创建索引了。所以,我们在创建索引的时候要注意,为什么会有这样的问题呢?

  难道是Es的bug?这个主要是因为Es使用的是lucene的框架,具体的原因大家可以参考官方文档 避免类型陷阱

 

十:创建索引结构时注意事项以及问题?

  1:  明确字段存储类型,是int类型还是文本类型;

    ES字段类型参考:https://blog.csdn.net/chengyuqiang/article/details/79048800

  2:  文本类型情况下,一种是keyword,一种是text ;

    二者的区别请参考:https://www.cnblogs.com/Rawls/p/10069670.html

  3:  字段结构类型一旦定义之后,是无法修改的,就跟你在数据库中一样,以前是int类型,

    是无法改成varchar类型的(在sqlserver 表中没有数据情况下可以修改)。

  4:  如果需要修改结构类型,只能在在这个文档类型中新增一个字段了。

  5:  同一个索引下面,字段名称尽量不要重复;

  6:  字段名称如果有重复情况,一定要使用相同的字段类型,要么都是integer,要么都是text。

 

posted @ 2019-01-21 19:48  好奇未必害死猫  阅读(19222)  评论(0编辑  收藏  举报