我正在尝试通过使用复合键来提高 Hazelcast 查找的性能。我有一个类实体:
Class Entity {
private Long id;
private String field1;
private String field2;
private String field3;
// getter and setters
}
我在 hazelcast-server.xml 中添加了一个包含上述 3 个字段的复合索引:
...
<map name="Entity">
<max-idle-seconds>2678400</max-idle-seconds>
<time-to-live-seconds>2678400</time-to-live-seconds>
<backup-count>3</backup-count>
<async-backup-count>3</async-backup-count>
<read-backup-data>true</read-backup-data>
<indexes>
<index ordered="false">field1, field2, field3</index>
</indexes>
</map>
...
查询 Hazelcast 地图:
EntryObject entryObject = new PredicateBuilder().getEntryObject();
PredicateBuilder predicate = entryObject.get("field1").equal("value1")
.and(entryObject.get("field2").equal("value2"))
.and(entryObject.get("field3").equal("value3"));
IMap<Long, Entity> entityCache = hazelcastInstance.getMap("Entity")
List<Entity> routings = new ArrayList<>(entityCache.values(predicate));
无论有没有索引,代码都可以正常工作。
问题:
- 这是创建和使用复合索引的正确方法吗?
- 有没有办法检查索引是否实际被查询使用?(我无法在 hazelcast 管理中心控制台上获得任何与索引相关的信息)
我扫描了很多 hazelcast 文档和互联网论坛,但找不到具体的答案。
Hazelcast 版本:3.12 Java 版本:8