elasticsearch删除索引后再新建时踩的坑
2018-03-27 11:49
281 查看
事件的过程
所有操作都在elasticsearch插件
head里
1. 清空所有索引
这个删除操作和linuxrm -rf /一样简单
DELETE \*
![](http://blog.img.zero-one.top/markdown-img-paste-20180327105418312.png)
就是酱紫,点击提交,就全部删除了。你可以刷新下页面,看看。
2. 导入数据
我们的数据是怎么到ES的
在项目里,我们查询ES数据时是通过spring data jpa,但插入并不是,是一个定时任务拉取第三方平台,数据量比较大,集成了
kafka,再由
logstash发送到
ES。
kafka是直接发送的json格式的字符串,
logstash里配置了动态模板。可以说是跟默认的差不多。
问题出现了
可以说每个发送到ES里的对象(应该叫文档)都有非常多的字段,里面大部分都是不需要分词的,但动态模板不会判断,所以到ES里数据都被分词了!然后我们使用聚合查询部分代码是这样的:TermsBuilder provinceTermsBuilder = AggregationBuilders.terms("provinceAgg").field("provinceCode.raw"); TermsBuilder cityTermsBuilder = AggregationBuilders.terms("cityAgg").field("cityCode.raw");
嗯,我们查不到任何数据。
看看
.raw,官方解释
大概总结下,就是同一个字段,多一个映射的方式。但这个映射我们没有设置过!我们没有
provinceCode.raw和
cityCode.raw字段,所以通过这两个字段来查询根本没有任何数据
这两个字段代表的省市的代码,例如31代表上海。这个是不需要分词的。
3. 研究索引
问题原因找到了。研究怎么去做这个映射,官方文档看完,想起,外包交接时给过一个映射的json格式的文件,查看一下,应该就是这些字段的映射,但可能是版本或文档更新的问题,直接执行后,并未起作用,按照文档中官方文档做了下修改,OK
大概流程是
再次删除所有索引
新建索引并设置映射
在解决索引问题时,还出现了查询数据时找不到索引的问题。发现
spring data jpa里配置的ES索引名和实际索引不同。Google一下,果然ES里还有别名这一个概念,引用官网的话:
即使你认为现在的索引设计已经很完美了,在生产环境中,还是有可能需要做一些修改的。做好准备:在你的应用中使用别名而不是索引名。然后你就可以在任何时候重建索引。别名的开销很小,应该广泛使用
4. 还有初始值这样的操作!
依然没有数据!在交接时加入了一个新功能,因此新加了一个字段。不过这个字段有默认值!所以查询这个字段时没有数据。
默认值设置:
METHOD: POST URL: /{索引}/{字段}/_update_by_query {"script":{"inline":"ctx._source.{字段}=0"}}
注意要用
post方法,一不小心用了
put直接就是新建一个{字段}类型了。然后查询这个字段时又是各种问题。无奈删之!
总结
使用ES开发,需要注意备份配置:
索引的映射
索引别名
调试开发时注意http方法。一不小心用了
DELETE那就是删除喽
原文首发于 风北的博客
相关文章推荐
- ElasticSearch49:索引管理_快速上机动手实战创建、修改以及删除索引
- SQL SERVER 2005 获取表的所有索引信息以及删除和新建语句
- 分布式搜索elasticsearch java API 之(四)------删除索引数据
- ElasticSearch 新建索引
- Elasticsearch:用Curator辅助Marvel,实现自动删除旧marvel索引
- elasticsearch删除索引报错【原】
- 分布式搜索elasticsearch java API 之(四)------删除索引数据
- Elasticsearch系列篇之删除索引
- shell之删除elasticsearch30天以前的索引
- ElasticSearch Java Api -删除索引
- 定时删除elasticsearch索引
- 定期删除elasticsearch集群10天以上的索引
- MAC Elasticsearch 新建索引
- SQL SERVER 2005 获取表的所有索引信息以及删除和新建语句
- 自动删除 Elasticsearch 索引
- 分布式搜索elasticsearch java API 之(三)(四)------索引数据、删除索引数据
- 分布式搜索 Elasticsearch —— 删除索引
- 分布式搜索elasticsearch java API 之(六)------批量添加删除索引
- Elasticsearch 索引、更新、删除文档
- 删除unique key,删除原有的联合主键,新建新的联合逐渐,删除索引,修改索引,mysql5.7修改索引名称,查看最大连接数量,查看是否有ssl