1

我在弹性搜索中有这个

.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 将我的 long 作为整数存储?

4

1 回答 1

0

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

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

于 2013-11-28T23:50:47.023 回答