Привет, Хабр! Помоги разобраться с 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"
}
}'
В итоге: первый индекс работает, второй нет.