Как использовать одно ядро ​​для каждой коллекции в облаке Solr? - PullRequest
1 голос
/ 02 апреля 2019

Можно ли в облаке solr сохранить данные одной коллекции на месте, чтобы все запросы на индексирование и поиск запускались только для этой коллекции. Я сталкиваюсь с проблемой в запросах solr join. допустим, у меня есть документ,

{
        "form_object_id":"a5ec120cd61e41a2a8f05b01edbb8a89",
        "app_id":2400,
        "id":"formobj_a5ec120cd61e41a2a8f05b01edbb8a89_account_1704",
        "account_id":1704,
        "location_gps_value":"[]",
        "title":"Mumbai",
        "formobject_created_at":"2019-03-31T09:28:40Z",
        "formobject_id":"a5ec120cd61e41a2a8f05b01edbb8a89",
        "Region_2_name":["Maharashtra"],
        "Region_2":["a478ce4bcd7c441c8534849631bebaf8"],
}


In this document i have one field "Region_2" which contains one id "a478ce4bcd7c441c8534849631bebaf8" & this id is present in 208 other solr documents like,

{
        "form_id":26825,
        "form_object_id":"a478ce4bcd7c441c8534849631bebaf8",
        "title":"Maharashtra",
        "location.lat":0.0,
        "location.long":0.0,
        "created_date":"2019-03-31T09:27:55Z",
        "form_name":"Region",
        "type":"assetformobject",
        "id":"formobj_a478ce4bcd7c441c8534849631bebaf8_account_1704",
}

здесь form_object_id совпадает с полем «Region_2» в предыдущих документах. когда я присоединяюсь, как,

{!join+from=Region_2+to=form_object_id}title:Mumbai

этот запрос должен был вернуть 208 документов, но он вернул только 51, но когда я запустил solr в одном ядре, тот же запрос вернул все 208 результатов. Я думаю, что это может быть потому, что Solr распределяет документы по нескольким шардам. Есть ли способ сделать это в облаке Solr?

1 Ответ

0 голосов
/ 19 июня 2019

Да, это возможно в облаке Solr.Регистрация невозможна, если два документа не находятся в одном и том же шарде.Чтобы объединить, вы должны сохранить каждый связанный документ в одном и том же шарде, в случае, если оба этих документа будут сохранены в одном и том же фрагменте, объединение будет работать, как мы ожидаем.

Решение 1:

Префикс вашего поля 'id' с некоторым общим значением, за которым следует "!" (Восклицательный знак) .Из приведенного выше примера похоже, что account_1704 является чем-то общим для вышеупомянутого документа.

Если возможно, создайте id что-то вроде «account_1704! _Formobj_a5ec120cd61e41a2a8f05b01edbb8a89» и «account_1704! _Formobj_a478ce4bcd7c441c8534849631bebaf8». В этом случае будет возникать одна и та же причина: в этом случае будет возникать другая причина: в этом случае будет возникать одна и та же причина: в этом случае будет возникать 2-я причина: в этом случае возникнет одна и та же последовательность: в этом случае возникнет 2-я причина: в этом случае будет возникать одна и та же причина: в этом случае 2-й вариант будет вызываться, и в этом случае будет возникать одна и та же последовательность:имеет значение для обоих документов будет одинаковым, поэтому оба документа будут перенаправлены в один и тот же осколок)

Если манипулирование «id» невозможно, перейдите к решению 2

Решение 2:

При создании набора сбора router.name - "неявный" (по умолчанию - CompositId) и router.field - "form_object_id" (как это часто бывает между документами).Затем эти документы будут сохранены в том же осколке, и объединение будет работать.

...