2015-08-10 2 views
0

поскольку через пару дней я получил эту проблему, что я не могу решить: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

ответ

0

Я использовал Помещенный создать реку вместо Post, что привело к проблеме, что странная ошибка оказалось, что никаких документов, в которых не индексируются ,

Я изменил его на POST, все было хорошо.

Смежные вопросы