поскольку через пару дней я получил эту проблему, что я не могу решить:Elasticsearch мост и MongoDB IndexAlreadyExist с пользовательским отображением
Что я хочу случиться: я получил коллекцию, которая должна быть передана elasticsearch через https://github.com/richardwilly98/elasticsearch-river-mongodb bevor я создаю реку, я устанавливаю пользовательское сопоставление индекса, так что я не получаю динамическое сопоставление, чтобы использовать тип geo_point в elasticsearch.
Так сначала mondel в MongoDB:
screenName: { type: String, required: true, unique: true, sparse: true },
firstName: { type: String, validate: isString, index: true },
lastName: { type: String, validate: isString, index: true },
deleted: { type: Number, index: true, default: 0 },
homeBase: {
type: {
type: String,
default: 'Point'
},
coordinates: [Number] // [<longitude>, <latitude>]
},
realTime: {
type: {
type: String,
default: 'Point'
},
coordinates: [Number] // [<longitude>, <latitude>]
}
RealTime и HomeBase являются 2dSpheres
Предварительно Mapping
{
"settings": {
"mapper": {
"dynamic": false
}
},
"mappings": {
"default": {
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"screenName": {
"type": "string"
},
"homeBase": {
"type": "object",
"properties": {
"coordinates": {
"type": "geo_point"
}
}
},
"realTime": {
"type": "object",
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
Wich также работает довольно хорошо, и индексируется унифицированный локатор вызвать PUT localhost: 9200/users
И Теперь река
{
"type": "mongodb",
"mongodb": {
"servers": [
{
"host": "localhost",
"port": "27017"
}
],
"options": "drop_collection",
"db": "entities",
"collection": "users"
},
"index": {
"name": "users",
"type": "documents"
}
}
Здесь я назвал PUT http://localhost:9200/_river/users/_meta Что я получаю это { "ошибка": "IndexAlreadyExistsException [[пользователей] уже существует]", "статус": 400 }
Для чего мне это нужно? делать запросы, как
GET _search
{
"query": {
"filtered": {
"query": {
"multi_match": {
"query": "mario",
"fields": ["firstName", "lastName", "specialities"]
}
},
"filter" : {
"mutate" {
"convert" => { "homeBase.coordinates" => "geo_point"}
},
"geo_bounding_box" : {
"homeBase.coordinates" : {
"top_left" : [1,100],
"bottom_right" : [1,100]
}
}
}
}
}
}
Стандарт, как я получил поле местоположения является двойной, если кто-нибудь знает способ запроса на местах вокруг координат на удваивается также было бы хорошо.
Пожалуйста, помогите!
MongoDB: 2.6.5 реки 2.0. Elasticsearch: 1.4.0