仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 521|回复: 11
打印 上一主题 下一主题

[学习教程] JAVA网站制作之Elasticsearch 的坑爹事――纪录一次mapping field修正历程仓酷云

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:17:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.Elasticsearch的坑爹事
本文纪录一次Elasticsearchmappingfield修正历程


团队利用Elasticsearch做日记的分类检索剖析服务,利用了相似以下的_mapping
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"settings":{
"number_of_shards":20
},
"mappings":{
"client":{
"properties":{
"ip":{
"type":"long"
},
"cost":{
"type":"long"
},
}

如今成绩来了,日记中输入的"127.0.0.1"这类的IP地点在Elasticsearch中是不克不及转化为long的(报错Java.lang.NumberFormatException),以是我们必需将字段改成string型大概ip型(Elasticsearch撑持,数据范例可见mapping-core-types)才干到达幻想的效果.

方针明白了,就是改失落mapping的ip的fieldtype便可.
elasticsearch.org找了一圈嘿嘿,update一下便可
1
2
3
4
5
6
7
8
curl-XPUTlocalhost:8301/store/client/_mapping-d
{
"client":{
"properties":{
"local_ip":{"type":"string","store":"yes"}
}
}
}

报错了局
1
{"error":"MergeMappingException[Mergefailedwithfailures{[mapper[local_ip]ofdifferenttype,current_type[long],merged_type[string]]}]","status":400}

尼玛真逗我long想转一下string竟然失利(elasticsearch产物层面理应撑持这类无损转化)无果
Google了一下相似的案例(案例)
在一个帖子中失掉的elasticsearch开辟职员的正确回复
"Youcantchangeexistingmappingtype,youneedtocreateanewindexwiththecorrectmappingandindexthedataagain."

想一想略坑啊我不论是由于elasticsearch仍是由于底层Lucene的缘故原由,修正一个field必要对一切已无数据的一切field举行reindex,这自己就是一个逆天的思绪,可是elasticsearch的研发职员还以为这没有甚么分歧理的.

在Elasticsearch下游逛了一圈,下面如许写到
(http://www.elasticsearch.org/blog/changing-mapping-with-zero-downtime/)
theproblem — whyyoucan’tchangemappings

Youcanonlyfindthatwhichisstoredinyourindex.Inordertomakeyourdatasearchable,yourdatabaseneedstoknowwhattypeofdataeachfieldcontainsandhowitshouldbeindexed.Ifyouswitchafieldtypefrome.g.astringtoadate,allofthedataforthatfieldthatyoualreadyhaveindexedbecomesuseless.Onewayoranother,youneedtoreindexthatfield.

...
OK,这一段话很公道,我改了一个field的范例必要对这个field举行reindex,如论哪一种数据库都必要这么做,没错.
我们再持续往下看看,reindexingyourdata,尼玛一看,弱爆了,他的reindexingyourdata不是对修正的filed举行reindex,而是创立了一个新的index,对一切的filed举行reindexing,太逆天了。

吐槽回吐槽,这个事变逃不了,那我就按他的来吧.
起首创立一个新的索引
<p>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
curl-XPUTlocalhost:8305/store_v2-d
{
"settings":{
"number_of_shards":20
},
"mappings":{
"client":{
"properties":{
"ip":{
"type":"string"
},
<p>"cost"
爱飞 该用户已被删除
沙发
发表于 2015-1-20 19:18:45 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
板凳
发表于 2015-1-29 16:05:40 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
金色的骷髅 该用户已被删除
地板
发表于 2015-1-29 16:05:40 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-4 06:35:37 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
只想知道 该用户已被删除
6#
发表于 2015-2-4 14:51:13 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
海妖 该用户已被删除
7#
发表于 2015-2-10 01:47:32 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
柔情似水 该用户已被删除
8#
发表于 2015-2-22 03:43:38 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
若天明 该用户已被删除
9#
发表于 2015-3-3 03:21:31 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
小魔女 该用户已被删除
10#
发表于 2015-3-8 15:34:37 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
小女巫 该用户已被删除
11#
发表于 2015-3-16 03:31:10 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
兰色精灵 该用户已被删除
12#
发表于 2015-3-22 19:10:53 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 00:53

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表