我正在使用Elasticsearch的XContentBuilder
创建文档类型映射的JSON表示:
XContentBuilder mapping = XContentFactory.jsonBuilder();
mapping.startObject()
.startObject("someType")
.startObject("_ttl")
.field("enabled", true).field("default", "90d")
.endObject()
//... and so forth. The full declaration is about 100 lines long.
映射的大小适中——总共大约有30个.startObject()
调用和60个.field()
调用。
声明此mapping
对象会导致Intellij的语法高亮显示/错误检查响应非常缓慢。如果我在同一文件中的任何位置键入int x = "";
,IDE大约需要20秒才能将该行突出显示为错误。如果我将mapping
对象的大小减少到一半左右,与正常的亚秒响应相比,IDE仍然需要4秒的响应时间。请注意,自动项目生成过程(我在IntelliJ设置下选择了"自动生成项目")以正常速度执行。
这是IntelliJ的一个"bug",还是工厂方法不应该被如此广泛地链接?将链分解为许多较小的调用可以解决问题,但有更好的方法吗?
其他信息:
使用IntelliJ 15.0.2终极版
Windows 7,64位,8GB RAM,酷睿i5-4430(四核)@3.00GHz
运行2个虚拟机和Eclipse IDE,从未出现过性能问题
除了将语句分解成更小的语句之外,我还没有找到其他解决方案。似乎将链条长度保持在5个或5个以下会给IntelliJ带来不错的反应时间。示例:
XContentBuilder mapping = XContentFactory.jsonBuilder();
mapping = mapping.startObject().startObject("someType");
mapping = mapping.startObject("_ttl").field("enabled", true).field("default", "90d").endObject();
// ...
mapping = mapping.endObject().endObject();