CouchDB, Elasticsearch — проблема с созданием индекса

Привет, Хабр! Помоги разобраться с Elasticsearch.

Использую CouchDB, Elasticsearch и плагин elasticsearch-river-couchdb для связи между ними.

В базе имеются объекты с полем name типа object:
{
  "name": {
     "first": "Ivan",
     "last": "Ivanov"
  }
}


Также имеются объекты, где поле name имеет тип string:

{
  "name":"Ivan Ivanov"
}


Проблема: индекс создаётся только для объектов, где поле name имеет тип object.
В маппинге для поля name указан тип object.

Вопрос: можно ли как-то указать для поля 2 типа?

Если нельзя, то возможно следует создать 2 индекса для 1 базы данных, и в каждом индексе учитывать объекты с нужным типом поля?

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

Для первого:

-XPUT 'site.ru:9200/_river/dev_idx/_meta' -d '{
     "type" : "couchdb",
     "couchdb" : {
  "host" : "127.0.0.1",
         "port" : 5984,
         "user" : "User",
         "password" : "Test",
         "db" : "dev",
         "filter" : null
         }
     },
     "index" : {
         "index" : "dev",
         "type" : "dev",
         "bulk_size" : "100",
         "bulk_timeout" : "10ms"
     }
 }'


Для второго:

-XPUT 'site.ru:9200/_river/dev_third/_meta' -d '{
     "type" : "couchdb",
     "couchdb" : {
  "host" : "127.0.0.1",
         "port" : 5984,
         "user" : "User",
         "password" : "Test",
         "db" : "dev",
         "filter" : null,
         
         "ignore_attachments":true
         }
     },
     "index" : {
         "index" : "dev_third",
         "type" : "dev_third",
         "bulk_size" : "100",
         "bulk_timeout" : "10ms"
     }
 }'


В итоге: первый индекс работает, второй нет.
  • Вопрос задан
  • 3502 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы