2014-11-17 3 views
0

Я использую Apache Solr создать коллекцию, черепки. Я могу построить коллекцию использованиеДобавление осколок в коллекции с помощью коллекции API в Solr

sudo curl 'http://localhost:8983/solr/admin/collections?action=CREATE&name=demo&numShards=2&replicationFactor=1' 

Здесь названия коллекции = «демо» числа Осколков = «2»

но когда я добавляю новый осколок с помощью

sudo curl 'http://localhost:8983/solr/admin/collections?action=CREATESHARD&shard=shard3&collection=demo' 

Факс: Ошибка:

<?xml version="1.0" encoding="UTF-8"?> 
<response> 
<lst name="responseHeader"><int name="status">400</int><int name="QTime">1</int></lst><lst name="error"><str name="msg">shards can be added only to 'implicit' collections</str><int name="code">400</int></lst> 
</response> 

ответ

2

От the documentation for CREATESHARD:

Осколки могут создаваться только с этим API для коллекций, которые используют 'неявное' маршрутизатор. Используйте SPLITSHARD для коллекций с использованием маршрутизатора 'compositeId'. Новый осколок с именем может быть создан для существующей «неявной» коллекции.

Таким образом, правильный способ сделать это - выдать команду SPLITSHARD вместо этого, а затем удалить старый осколок после создания двух новых осколков. Из документации SPLITSHARD:

Разделение осколков приведет к существующему осколку и разбивает его на две части. Исходный осколок будет по-прежнему содержать те же данные, что и есть, но он начнет перенаправление запросов на новые осколки. У новых осколков будет столько реплик, как исходный осколок. После разделения осколка вы должны сделать фиксацию, чтобы сделать документы видимыми, а затем вы можете удалить исходный осколок (с помощью API-интерфейса Core или Solr Admin UI), когда будете готовы.

+0

'@MatsLindh:' Звучит неплохо! Он разбивает «исходный осколок» на «2 суб-осколки», который содержит части исходного осколка. Я хочу, чтобы создать «новый (свежий) осколок». Можно ли сделать это? – iNikkz

+1

Если вы не используете неявный маршрутизатор (это означает, что вы сами отправляете документы на конкретный осколок вручную). Неявный маршрутизатор выбирается, если вы не устанавливаете параметр numShards - установка параметра использует маршрутизатор составного интерфейса. – MatsLindh

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