Я помещаю объект с 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));
Я пытаюсь получить BODY по идентификатору (формат идентификатора как "10: 3331-333333-333333") и фильтрует по KEYS.
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));
Это работает, но если я поставлю две строки с одинаковым идентификатором, но разными КЛЮЧАМИ, я смогу получить только последнюю запись.
если я положу в оболочку scan 'emp', {VERSIONS=>4}
я вижу все тела. Как получить ТЕЛО по идентификатору и фильтрам?