在es5.6版本的时候,使用聚合语句查询es的时候,会出现异常,关键信息如下: can’t load fielddata on because fielddata is unsupported on fields of type xxx, use doc value instead… 主要是因为,es 索引的mapping里面的doc_values属性的值设置的是false。 这个属性是干啥的呢?快速了解一下。 字段的 doc_values 属性有两个值, true、false。默认为 true ,即开启。 当 doc_values 为 fasle 时,无法基于该字段排序、聚合、在脚本中访问字段值。 当 doc_values 为 true 时,ES 会增加一个相应的正排索引,这增加的磁盘占用,也会导致索引数据速度慢一些。 Doc Values 默认对所有字段启用,除了 analyzed strings 可分词的字段外。也就是说所有的数字、地理坐标、日期、IP 和不可分词的(not_analyzed)字符类型都会默认开启。 为了加快排序、聚合操作,在建立倒排索引的时候,额外增加一个列式存储映射,是一个空间换时间的做法。默认是开启的,对于确定不需要聚合或者排序的字段可以关闭。 在ES保持文档,构建倒排索引的同时doc_values就被生成了, doc_values数据太大时, 它存储在电脑磁盘上. doc_values是列式存储结构, 它擅长做聚合和排序 对于非分词字段, doc_values默认值是true(开启的), 如果确定某字段不参与聚合和排序,可以把该字段的doc_values设为false 例如SessionID, 它是keyword类型, 对它聚合或排序毫无意义, 需要把doc_values设为false, 节约磁盘空间 分词字段不能用doc_values 通过设置 doc_values: false ,这个字段将不能被用于聚合、排序以及脚本操作 那,解决报错的方法就是修改这个索引的mapping,把这个属性=false的给删掉。或者给改成true https://blog.csdn.net/qq_27093465/article/details/114639346
Mocha 是一个功能丰富的Javascript测试框架,它能运行在Node.js和浏览器中,支持BDD、TDD、QUnit、Exports式的测试, 安装 npm install mocha -g