es索引的创建

es是一个分布式的文档数据库,索引的文档都是以json序列化形式存贮的,而不是像关系型数据库那样是列数据行的形式存贮的。
在es 7.0之前,常把es和关系型数据库的名词做如下映射

es    mysql
index (索引)    datasource(数据库)
type (类型)    table
mapping    column
document    row
es的index相当于关系数据库的数据库,而type 相当于表,mapping表示某个type的字段的定义,document这相当于表的每条数据,
即一个index下面有多个type,多个type可以定义自己的mapping属性,而某个document则是一个json序列化后的数据
但在es7.0后,官方文档废弃type这层概念,理由是es同一个index下,不同的type,其实在都是根据_type元属性来区别的,在搜索的时候,根据_type来过滤,推荐同一个索引不同的type的mapping中字段要尽量相同,如果差异较大,则推荐定义不同的索引。文档的字段差异较少,有利于提高es的存贮空间的利用率和压缩率。而且不同的type中的mapping的相同名称的字段,在底层都存贮在同一个字段中。所以同名的字段的mapping必须相同否则会无法创建mapping。所以官方在7.0后,type不再被推荐使用。只有一个默认的type 是 “_doc”,即一个 index,一个type(默认_doc)。

1.如何和es交互
1.1 使用java client
es提供了java的sdk,可以通过java对es进行操作,java客户端分低级客户端,和高级客户端,还有已经不推荐使用的transport client。这些我们后续再细说。

2.1 使用restful api
es提供restful api接口,可通过http请求直接访问。
我们可以通过 curl,postman,kibana的dev-tools等工具轻易的和es进行交互。

例如curl请求格式如下


3.创建索引
**es的index我们可以预先定义好,包括索引的设置,mapping的定义,别名等。**也可以直接用默认的设置,直接添加文档,es会自动帮我们创建索引。帮我们定义mapping,但默认的不一定符合我们的需求。当然我们可以根据相关的api后续再去更改索引的配置

index的创建包括三部分:
settings:索引的基本配置,包括分片数,每个分片对应的复制数量,分词器等
mapping:属性的类型及其相关定义
aliases:索引别名的定义


这用kibana 的dev-tools工具,建立的一个简单的索引,它是一个简化的类似于curl的表达式。

查询我们刚刚创建的索引

GET my-index-000001
1
{
  "my-index-000001" : {
    "aliases" : { },
    "mappings" : {
      "properties" : {
        "title" : {
          "type" : "text",
          "analyzer" : "my_analyzer",
          "search_analyzer" : "my_stop_analyzer",
          "search_quote_analyzer" : "my_analyzer"
        }
      }
    },
    "settings" : {
      "index" : {
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "my-index-000001",
        "creation_date" : "1616323948983",
        "analysis" : {
          "filter" : {
            "english_stop" : {
              "type" : "stop",
              "stopwords" : "_english_"
            }
          },
          "analyzer" : {
            "my_analyzer" : {
              "filter" : [
                "lowercase"
              ],
              "type" : "custom",
              "tokenizer" : "standard"
            },
            "my_stop_analyzer" : {
              "filter" : [
                "lowercase",
                "english_stop"
              ],
              "type" : "custom",
              "tokenizer" : "standard"
            }
          }
        },
        "number_of_replicas" : "1",
        "uuid" : "MXPZfJoPR9WfiCXYwTFJIg",
        "version" : {
          "created" : "7110199"
        }
      }
    }
  }
}


我们也可以直接往索引里面添加文档,es会自动帮我们创建索引
添加文档格式需要注意:
索引名后面必须加+ _doc,
1表示是文档的_id的值,可以理解为文档的唯一表示,该值可以是数字也可以是字符串,如果没有指定的话,es会自动创建一个不重复的字符串。

es自动定义的index如下

{
  "my-index-000002" : {
    "aliases" : { },
    "mappings" : {
      "properties" : {
        "address" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "age" : {
          "type" : "long"
        },
        "name" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    },
    "settings" : {
      "index" : {
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "my-index-000002",
        "creation_date" : "1620562449845",
        "number_of_replicas" : "1",
        "uuid" : "I225Hg5wSXuJLn86BHhWZQ",
        "version" : {
          "created" : "7110199"
        }
      }
    }
  }
}



更加详细的用法请参考官方文档:
https://www.elastic.co/guide/en/elasticsearch/reference/7.10/documents-indices.html
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值