Elassandra многократное отображение типа

Я использую Elassandra для поиска в почте, Cassandra для сохранения почты и ElasticSearch для поиска в этих письмах.

Моя проблема в том, что начиная с ElasticSearch 6, мы не можем использовать несколько типов в одном отображении. Вот мое отображение:

"mappings": {
    "mail__mail": {
        "discover" : ".*",
        "properties": {
            "mailfrom": { 
                "type": "text",
                "fields": {
                    "keyword": {
                        "type": "keyword"
                    },
                    "ngram": {
                        "type": "text",
                        "analyzer": "edge_ngram_analyzer",
                        "search_analyzer": "edge_ngram_search_analyzer"
                    }
                }
            },
            "subject": { 
                "type": "text",
                "fields": {
                    "keyword": {
                        "type": "keyword"
                    },
                    "ngram": {
                        "type": "text",
                        "analyzer": "edge_ngram_analyzer",
                        "search_analyzer": "edge_ngram_search_analyzer"
                    }
                }
            },
            "date" : {
                "type" : "date"
            },
            "folderid" : {
                "type" : "text"
            }
        }
    },
    "mail__account" : {
        "discover" : ".*",
        "properties": {
            "userId" : {
                "type" : "Integer"
            }
        }
    }
}

Как я могу использовать ElasticSearch 6 для поиска в нескольких таблицах Кассандры?

2 ответа

Как сказал @Alex, вам нужно сопоставить 1 таблицу для каждого индекса ES, но вы можете создать несколько индексов ES для каждого пространства ключей, сопоставляя их с разными таблицами.

Вы должны указать имя пространства ключей в качестве параметра индекса. Это делается с использованием следующего синтаксиса:

curl -XPUT "http://localhost:9200/your_index/" -d '{
    "settings" : { "keyspace" : "your_keyspace" },
    "mappings" : {
        "your_table" : {
            "properties" : {
                ...
            }
        }
    }
}

Начиная с ES6 вам нужно отобразить 1 таблицу для каждого индекса. Поиск по нескольким индексам:

https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-index.html

Другие вопросы по тегам