Elassandra多类型映射

时间:2018-09-18 10:08:32

标签: elasticsearch cassandra 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在多个cassandra表中搜索?

2 个答案:

答案 0 :(得分:0)

从ES6开始,您需要为每个索引映射1个表。 搜索多个索引:

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

答案 1 :(得分:0)

如@Alex所说,您需要为每个ES索引映射1个表,但是您可以为每个键空间创建多个ES索引,映射到不同的表。

您必须指定一个键空间名称作为索引设置。这是通过以下语法完成的:

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