Невозможно создать сопоставление Elasticsearch для пространства ключей Cassandra - PullRequest
0 голосов
/ 30 января 2019

В настоящее время я экспериментирую с Elassandra (комбинация Elasticsearch и Cassandra).Там у меня есть существующее пространство ключей Cassandra с таблицами, и я хочу создать сопоставление с Elasticsearch, чтобы я мог использовать API Elasticsearch для поиска / фильтрации данных.

К сожалению, он не работает, и я не уверен, почемуто есть.

Прежде всего, я делаю PUT-запрос к конечной точке Elasticsearch HTTP, чтобы создать отображение:

{
    "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?

1 Ответ

0 голосов
/ 31 января 2019

Начиная с 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": ".*"
        }
    }
}
...