为什么 Elasticsearch 0.19.12 将 Long 存储为整数



我在弹性搜索中有这个

.startObject("mylongfield").field("type", "long").field("store", "true").field("index", "not_analyzed").endObject()
Map<String, Object> row
row.put("mylongfield", Long.valueOf("0").longValue());
OR
row.put("mylongfield", Long.valueOf(0L).longValue());

当我稍后得到地图时

resultMap = searchHit.sourceAsMap()
resultMap.get("mylongfield") ... IT IS AN INTEGER ?!?

为什么 ealsticsearch 将我的长存储为整数?

我在使用 Elasticsearch 0.90.5 时遇到了类似的行为 - 数据的值似乎覆盖了映射。

这里讨论了同样的问题。如果我理解正确,发生这种情况是因为 Elasticseach 使用 Jackson 将 JSON 数据转换为 Map,这是根据值完成的。我求助于使用 instanceof 来确定返回对象的类。

相关内容

最新更新