您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
elasticSearch类型的自动创建、动态映射与cluster.routing.rebalance.enable和cluster.routing.allocation.enable的恢复
发布时间:2021-09-09 13:48:09编辑:雪饮阅读()
类型的自动创建
像我们之前正常创建一个索引文档,若一次性创建,则url就是:
索引名/类型/文档id
如果配置的索引与映射这些都是自动创建策略,也就是默认的策略。
则这样就可以直接一次性创建了索引、类型、文档
那么其实也可以忽略掉类型,我们直接创建有如:
请求正文:
{
"from_acc":"7056443341", "to_acc":"7032460534",
"date":"11/1/2016", "amount":10000
}
响应正文:
{
"_index": "accountdetails",
"_type": "tansferreport",
"_id": "cU__yHsB38KwZZDReQDg",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
像是这样不用指定type,则默认是_doc类型(elasticsearch-7.14.0-windows-x86_64)
当然这里有可能会出现错误如:
![动态映射.png](/d/file/manshenghuo/chengxurensheng/bd21cfb8f1d678c076b712e494757631.png)
{
"error": {
"root_cause": [
{
"type": "unavailable_shards_exception",
"reason": "[accountdetails][0] primary shard is not active Timeout: [1m], request: [BulkShardRequest [[accountdetails][0]] containing [index {[accountdetails][tansferreport][ck8MyXsB38KwZZDRRQCJ], source[{\r\n \"from_acc\":\"7056443341\", \"to_acc\":\"7032460534\",\r\n \"date\":\"11/1/2016\", \"amount\":10000\r\n}]}]]"
}
],
"type": "unavailable_shards_exception",
"reason": "[accountdetails][0] primary shard is not active Timeout: [1m], request: [BulkShardRequest [[accountdetails][0]] containing [index {[accountdetails][tansferreport][ck8MyXsB38KwZZDRRQCJ], source[{\r\n \"from_acc\":\"7056443341\", \"to_acc\":\"7032460534\",\r\n \"date\":\"11/1/2016\", \"amount\":10000\r\n}]}]]"
},
"status": 503
}
这里是因为我们之前研究集群分片分配时候有可能是
cluster.routing.rebalance.enable或者cluster.routing.allocation.enable置为none导致的。那么这里不管是那个,把这两个都恢复默认值,它们的默认值都是all。
为什么可能是这两个配置出现的问题,其实我也是直觉啦。哈哈。
反正这样设置之后就成功了。
动态映射
ElasticSearch的动态映射就是说像是我们之前大多数时候创建文档时候有过各种字段,我们都没有自己预先定义映射,但是我们学过前面几种特殊的映射像是之前学习的ip地址的还有之前学习的那个经纬度的。那么其实对于我们这些自定义的普通字段也是有映射的,就拿上面这个请求来说,虽然我们没有显式的预先定义映射,但是其实系统对这种没有预先显式的定义映射的情况下,会在运行时自动创建映射,这就叫做动态映射。
那么你可以看看我们刚才建立的这个文档时候同时由于依赖关系则一起建立出来的索引的索引信息
![动态映射.png](/d/file/manshenghuo/chengxurensheng/18a0b8d12c9eebbe3298028c547ae143.png)
可以看到它会自动为我们每个字段建立对应映射,不过这里我个人从观察得知,应该自动建立字段映射都只是简单的通用的,像是字符串就算text,像是数字就是long吧。不过这里只是初探,暂时不考虑这么多,后面有机会了再深入研究,这里仅个人看法。
关键字词:elasticSearch,动态映射