2019独角兽企业重金招聘Python工程师标准>>>

事件的过程

所有操作都在elasticsearch插件head

1. 清空所有索引

这个删除操作和linux rm -rf / 一样简单

DELETE
\*

就是酱紫,点击提交,就全部删除了。你可以刷新下页面,看看。

2. 导入数据

我们的数据是怎么到ES的

在项目里,我们查询ES数据时是通过spring data jpa,但插入并不是,是一个定时任务拉取第三方平台,数据量比较大,集成了kafka,再由logstash发送到ESkafka是直接发送的json格式的字符串,logstash里配置了动态模板。可以说是跟默认的差不多。

问题出现了

可以说每个发送到ES里的对象(应该叫文档)都有非常多的字段,里面大部分都是不需要分词的,但动态模板不会判断,所以到ES里数据都被分词了!然后我们使用聚合查询部分代码是这样的:

TermsBuilder provinceTermsBuilder = AggregationBuilders.terms("provinceAgg").field("provinceCode.raw");
TermsBuilder cityTermsBuilder = AggregationBuilders.terms("cityAgg").field("cityCode.raw");

嗯,我们查不到任何数据。
看看.raw,官方解释 大概总结下,就是同一个字段,多一个映射的方式。但这个映射我们没有设置过!我们没有provinceCode.rawcityCode.raw字段,所以通过这两个字段来查询根本没有任何数据

这两个字段代表的省市的代码,例如31代表上海。这个是不需要分词的。

3. 研究索引

问题原因找到了。研究怎么去做这个映射,官方文档 看完,想起,外包交接时给过一个映射的json格式的文件,查看一下,应该就是这些字段的映射,但可能是版本或文档更新的问题,直接执行后,并未起作用,按照文档中官方文档做了下修改,OK 大概流程是

  1. 再次删除所有索引
  2. 新建索引并设置映射

在解决索引问题时,还出现了查询数据时找不到索引的问题。发现spring data jpa里配置的ES索引名和实际索引不同。Google一下,果然ES里还有别名这一个概念,引用官网的话:

即使你认为现在的索引设计已经很完美了,在生产环境中,还是有可能需要做一些修改的。做好准备:在你的应用中使用别名而不是索引名。然后你就可以在任何时候重建索引。别名的开销很小,应该广泛使用

4. 还有初始值这样的操作!

依然没有数据!
在交接时加入了一个新功能,因此新加了一个字段。不过这个字段有默认值!所以查询这个字段时没有数据。
默认值设置:

METHOD: POST
URL: /{索引}/{字段}/_update_by_query
{"script":{"inline":"ctx._source.{字段}=0"}}

注意要用post方法,一不小心用了put直接就是新建一个{字段}类型了。然后查询这个字段时又是各种问题。无奈删之!

总结

使用ES开发,需要注意备份配置:

  1. 索引的映射
  2. 索引别名

调试开发时注意http方法。一不小心用了DELETE那就是删除喽

原文首发于 风北的博客

转载于:https://my.oschina.net/northerSong/blog/1785525

elasticsearch删除索引后再新建时踩的坑相关推荐

  1. Elasticsearch 删除索引

    章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...

  2. elasticsearch删除索引_一文带您了解 Elasticsearch 中,如何进行索引管理(图文教程)

    在 Elasticsearch 中,索引是一个非常重要的概念,它是具有相同结构的文档集合.类比关系型数据库,比如 Mysql, 你可以把它对标看成和库同级别的概念. 今天小哈将带着大家了解, 在 El ...

  3. 分布式搜索 Elasticsearch —— 删除索引

    为什么80%的码农都做不了架构师?>>>    删除索引的方式很多,这里列举三种. 指定 index .type.id 执行删除 package com.gsoft.gsearch. ...

  4. Elasticsearch -删除索引(index)

    删除单个: DELETE /index curl -XDELETE 'http://192.169.1.666:9200/index 你也可以这样删除多个索引: DELETE /index_one,i ...

  5. ElasticSearch删除数据后释放磁盘空间

    问题:公司es 几百万数据量,删到只剩30万数据量,数据磁盘并没有变少多少. 经过查询才知道删除文档并没有真正删除,仅作了删除标记,从而不能再被搜索到.要想释放磁盘的空间,要使用forcemerge命 ...

  6. Spring Data ElasticSearch删除索引遇到的java.lang.IllegalStateException: Failed to load ApplicationContext异常

    异常内容如下: log4j:WARN No appenders could be found for logger (org.springframework.test.context.junit4.S ...

  7. 自定义View开发时踩的坑

    在这篇博客中,我希望按照日记的方式来记录自己在android的自定义视图开发中所遇到的一些问题: 1.首先是在自定义view中获取对应的子视图,在自定义视图中定义了很多成员变量,按照个人的代码编写习惯 ...

  8. mysql gtid坑_通过mysqlbinlog --skip-gtids恢复后再备份可能造成的坑

    版本 [root@uz22199 backup]# innobackupex --version innobackupex version 2.4.8 Linux (x86_64) (revision ...

  9. 使用 i18n 时踩的坑

    在开发中我们可能会使用到 i18n 国际化,遇到的一些小问题 开发警告! 警告: You are running the esm-bundler build of vue-i18n. It is re ...

最新文章

  1. python怎么学最快-人工智能Python开发怎么学才能最快入门
  2. 计算机组成原理白中英作业,计算机组成原理白中英部分作业解答(第二章)
  3. redis类型[string 、list 、 set 、sorted set 、hash]
  4. c语言意义y x 8.0,C语言符号意义(8页)-原创力文档
  5. latex 幻灯片演示模板
  6. ICE通信之IceGrid服务(一)
  7. Oracle 19c 安装步骤
  8. writeup 2019“新华三杯”中国医疗机构网络安全攻防演练大赛CTF(复赛)
  9. php中adodb中文手册,[转载]ADODB中文手册(4)
  10. Java项目:校园自行车租赁管理系统(java+JSP+JavaScript+Servlet+Mysql)
  11. Win10专业版彻底禁用自动更新
  12. 模板匹配及其源代码---Edge Based Template Matching
  13. Caffe:图像数据转换成ldb(leveldb/lmdb)文件
  14. 自动切图生成html,Photoshop如何实现UI自动切图?_html/css_WEB-ITnose
  15. 使用gdal的ogr创建shapefile文件(c++)
  16. 教你创建Oracle复合索引(精)
  17. [Unity3d]unity从入门到精通官方教程
  18. matlab计算位温,大气位温、相当位温、饱和相当位温、静力稳定度
  19. Maven更换远程仓库
  20. Vue3.0 mixin的使用 以及混合方式讲解

热门文章

  1. kubernetes管理mysql_kubernetes云平台管理实战:tomcat + mysql(十二)
  2. 快速排序算法_经常用到的的排序(快速排序和归并排序)简单的计算机算法学习...
  3. Android的EditText文字动态监听
  4. 米莱狄机器人怎么那么多_王者荣耀米莱狄攻略,团战技能好了就丢,操作最简单上分法师...
  5. android:layout_margintop=3dip,南昌航空大学android期末复习资料之 编程题.pdf
  6. 构建基于流程的多维度企业管理体系
  7. 腾讯AI加速器三期全球招募开启,打造AI+产业生力军
  8. 百度宣布AI同传最新突破!能预测,低延时,演示效果惊人,外媒称媲美人类翻译...
  9. AI攻城狮,你需要那个数据集的种子么?
  10. AI芯片,为何现在成为新军备竞赛?