如何在 Hazelcast 运行 中创建索引映射作为单独的服务器

How to create index map in Hazelcast running as separate server

我们正在使用 Predicate API 在 Hazelcast (4.2) 中查询地图。我找到了如何向地图添加索引的文档 (https://docs.hazelcast.com/imdg/4.2/query/how-distributed-query-works#indexing-queries)。不幸的是,我发现的所有配置都与应用程序实例作为成员的嵌入式集群的情况有关。但是我们在单独的服务器和作为客户端连接到它的应用程序上使用 Hazelcast 运行 的客户端-服务器拓扑。 ClientConfig 无法添加索引(除了近缓存)。

我想知道,我们如何在 Hazelcast 服务器上为地图添加索引?还是我误解了谓词的处理方式以及在近缓存上设置索引就足够了?

有两种方法可以从客户端添加索引。

如果您的地图还不存在,您可以使用索引配置动态添加地图配置:

HazelcastInstance client = ...

MapConfig mapConfig = new MapConfig("my-map")
    .addIndexConfig(new IndexConfig(IndexType.HASH, "name"));

client.getConfig().addMapConfig(mapConfig);

如果您的地图已经存在,您可以在地图本身上使用 addIndex

HazelcastInstance client = ...

IMap<Object, Object> clientMap = client.getMap("my-map");
clientMap.addIndex(new IndexConfig(IndexType.HASH, "name"));