我把一个实体放在3cf上
Put entity = new Put(id.getBytes(StandardCharsets.UTF_8));
HashMap<String, String> keyFields = new HashMap<>();
keyFields.put("MessageOperation", applicationEntity.getMessageOperation());
String key = gson.toJson(keyFields);
entity.addColumn(M, META, meta.getBytes(StandardCharsets.UTF_8));
entity.addColumn(K, KEYS, key.getBytes(StandardCharsets.UTF_8));
entity.addColumn(D, BODY, body.getBytes(StandardCharsets.UTF_8));
我尝试通过id获取body(id的格式如“10:3331-333333-333333333”)并通过键进行过滤。
Get gett = new Get(id.getBytes());
ArrayList<Filter> filters = new ArrayList<>();
if (messageOperation != null && !StringUtils.isEmpty(messageOperation)) {
Filter filterByMsgOp = new SingleColumnValueFilter(K, KEYS, CompareFilter.CompareOp.EQUAL,
new SubstringComparator("\"MessageOperation\":\"" + messageOperation));
filters.add(filterByMsgOp);
}
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL, filters);
gett.setFilter(filterList);
gett.setMaxVersions(5);
gett.setTimeRange(0, Long.MAX_VALUE);
entity = table.get(gett);
NavigableMap<byte[], byte[]> data = entity.getFamilyMap(D);
String resultt = new String(data.get(BODY));
这是可行的,但是如果我用相同的id但是不同的键放置两行,那么我只能得到最后一个条目。
如果我把壳放进去 scan 'emp', {VERSIONS=>4}
我看到了所有的尸体。如何通过id和过滤器获取身体?
暂无答案!
目前还没有任何答案,快来回答吧!