我在弹性搜索中有这个
.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 来确定返回对象的类。