在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

elasticsearch6.0建议一个index一个type,实际应用中如何设计index及mapping

Elasticsearch | 作者 xpsallwell | 发布于2017年11月28日 | 阅读数:7387

elasticsearch6.0中建议使用一个index一个type,再往后的版本将去掉type的概念,那么我们在实际应用中怎么样设计比较合理呢?比如我有一个购物网站的业务,分为:用户,店铺,虚拟账户,订单,促销,商品,评论等等这些业务,每种业务下可能会有多张表结构(mysql)。若使用es6.0作为查询服务,是建立一个index包含多种业务(每个业务中的一张表是一个type) 还是每种业务都是一个index,还是有其它更合理的设计方法?
已邀请:

BrickXu - BlackOps@Qunar

赞同来自: zhengb302

把type映射到RDBMS中的table概念已经被抛弃了,同时也是错误的使用方式,毕竟在RDBMS中,表与表之间的数据是分割存储的,而ES中同一个索引的不同type数据最终是放在一起的,必须保证不同type之间同名field的类型一致,还不算其他乱七八糟的问题。你用es6.x的时候肯定是优先把index作为一个最小的物理隔离单位,把以前RDBMS的table数据放到index里面,不同table放到不同index,才是符合目前规划的方式。
 
更具体的解释可以参考一个很早的官方blog:https://www.elastic.co/blog/index-vs-type,这里的内容足够解释你的疑惑。

cybersword

赞同来自:

看官网的文档,可以加一个type字段,用filter解决分type查询的问题,就跟之前一样了

要回复问题请先登录注册