2015-04-14 1 views
0

Есть ли способ добавить документы в определенный осколок?Как вставить документ в конкретный осколок в облачном режиме Apache Solr

Например, документы типа A всегда будут вставлены в shard1, а тип документа B всегда переходит в shard2.

Я пробовал использовать настраиваемый маршрутизатор, но не гарантирует, что другой префикс будет маршрутизироваться на другой осколок.

PS. Я нахожусь на Solr 5, используя облачный режим.

+0

Вы когда-нибудь находили ответ на этот вопрос? Я борюсь с той же проблемой, используя Solr 5.1.0 в облачном режиме. – LandonC

+0

@ LandonC Оказалось, что я живу со случайными осколками и множественной избыточности ... , если вы нашли решение, дайте мне знать :-) – TLJ

+0

С помощью некоторых других людей у ​​меня есть то, что я _believe_ является решением. Он работает в тестовом сценарии, насколько я знаю. Я опубликую ниже. – LandonC

ответ

2

Оговорка: Я использую SolrNet для доступа к SolrCloud, и он еще не интегрируется с ZooKeeper. Для Java-клиентов это может быть намного проще.

Несмотря на то, что я читал here и here в отношении CompositeId Router, я никогда не смог заставить его работать. Что @jay помогло мне фигурировать out - это способ использования «неявной» маршрутизации для достижения этого. При создании коллекции, как это (выйти из параметра numShards):

http://localhost:8983/solr/admin/collections?action=CREATE&name=myCol&maxShardsPerNode=2&router.name=implicit&shards=shard1,shard2&router.field=shard 

затем добавить поле к вашему schema.xml имени «осколок» (соответствующий параметр router.field), вы можете индексировать к определенному осколок просто путем добавления поле shard для индексации документа и указания имени осколка. Во время запроса вы можете указать shards для поиска - больше here (я смог просто указать имя осколка без конкретного адреса).

Я еще не тестировал это на производстве, но проверил несколько экземпляров VirtualBox с ZooKeeper, HAProxy и несколькими узлами Solr, и он делает именно то, что я ожидал. Исправления и комментарии приветствуются.