0

目前,我正在试验 Elassandra(Elasticsearch 和 Cassandra 的组合)。我有一个带有表的现有 Cassandra 键空间,并且想要创建到 Elasticsearch 的映射,以便我可以使用 Elasticsearch API 来搜索/过滤数据。

不幸的是,它不起作用,我不确定为什么会这样。

首先,我向 Elasticsearch HTTP 端点发出 PUT 请求以创建映射:

{
    "settings": {
        "keyspace": "my_keyspace"
    },
    "mapping": {
        "sensordatatable": {
            "discover": ".*"
        },
        "eventtable": {
                "discover": ".*"
        }
    }
} 

然后我得到这个答案:

{
    "error": {
        "root_cause": [
            {
                "type": "settings_exception",
                "reason": "Cannot create index, underlying keyspace requires the NetworkTopologyStrategy."
            }
        ],
        "type": "settings_exception",
        "reason": "Cannot create index, underlying keyspace requires the NetworkTopologyStrategy."
    },
    "status": 500
}

在这篇文章(https://github.com/strapdata/elassandra/issues/44#issuecomment-253055846)中,也有人使用SimpleStrategy它似乎对他有用。有人可以解释一下为什么我必须使用NetworkTopologyStrategy吗?

4

1 回答 1

0

从 Elassandra 5+ 开始,仅NetworkTopologyStrategy支持,但也没有阻止支持SimpleStrategy的技术问题。NetworkTopologyStrategy通常是首选,因为它允许您扩展多个数据中心。

顺便说一句,您正在尝试在两个表上创建索引。但是从版本 6 开始,Elasticsearch 只支持每个索引一种类型。如果您需要在同一个键空间中索引两个表,您可以创建两个单独的索引:

PUT sensordata
{
    "settings": {
        "keyspace": "my_keyspace"
    },
    "mapping": {
        "_doc": {
            "discover": ".*"
        }
    }
} 

和 :

PUT event
{
    "settings": {
        "keyspace": "my_keyspace"
    },
    "mapping": {
        "_doc": {
                "discover": ".*"
        }
    }
}
于 2019-01-30T23:13:11.710 回答