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