Создание осколков Solr в Alfresco 6.1 CE

После перехода на Alfresco CE 6.1 (201901 GA) и Alfresco Search Services у нас появился массовый поиск проблемы с производительностью. Поэтому я попытался настроить сегментирование в solr, выполнив создание сегментов Solr вручную. . Мне удалось создать осколки и швы индексации, но когда я настроил Alfresco для использования осколков в alfresco-global.properties

solr6.store.mappings.value.solrMappingAlfresco.nodeString=solr.mycompany.com:8983/solr/#/alfresco
solr6.store.mappings.value.solrMappingAlfresco.numShards=4
solr6.store.mappings.value.solrMappingAlfresco.replicationFactor=1

solr6.store.mappings.value.solrMappingArchive.nodeString=solr.mycompany.com:8983/solr/#/archive
solr6.store.mappings.value.solrMappingArchive.numShards=4
solr6.store.mappings.value.solrMappingArchive.replicationFactor=1

Я получаю "Запрос не выполнен 405"

/solr/#/alfresco-2/alfresco?wt=json&fl=DBID%2Cscore&rows=50&shards=solr.mycompany.com:8983%2Fsolr%2F%23%2Falfresco-0,solr.mycompany.com:8983%2Fsolr%2F%23%2Falfresco-1,solr.mycompany.com:8983%2Fsolr%2F%23%2Falfresco-2,solr.mycompany.com:8983%2Fsolr%2F%23%2Falfresco-3&df=TEXT&start=0&locale=*&alternativeDic=DEFAULT_DICTIONARY&sort=%40cm%3Amodified+desc&fq=%7B%21afts%7DAUTHORITY_FILTER_FROM_JSON&fq=%7B%21afts%7DTENANT_FILTER_FROM_JSON
        at org.alfresco.repo.search.impl.solr.AbstractSolrQueryHTTPClient.postQuery(AbstractSolrQueryHTTPClient.java:79)
        at org.alfresco.repo.search.impl.solr.SolrQueryHTTPClient.postSolrQuery(SolrQueryHTTPClient.java:1116)
        at es.keensoft.repo.search.impl.solr.EnhancedSolrQueryHTTPClient.postSolrQuery(EnhancedSolrQueryHTTPClient.java:43)
        at org.alfresco.repo.search.impl.solr.SolrQueryHTTPClient.executeQuery(SolrQueryHTTPClient.java:583)
        at org.alfresco.repo.search.impl.solr.SolrQueryLanguage.executeQuery(SolrQueryLanguage.java:52)
        at org.alfresco.repo.search.impl.solr.SolrSearchService.query(SolrSearchService.java:354)
        at org.alfresco.repo.search.SearcherComponent.query(SearcherComponent.java:84)
        at jdk.internal.reflect.GeneratedMethodAccessor789.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.alfresco.repo.management.subsystems.SubsystemProxyFactory$1.invoke(SubsystemProxyFactory.java:79)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
        at com.sun.proxy.$Proxy36.query(Unknown Source)
        at org.alfresco.repo.search.impl.SearchServiceSubSystemDelegator.query(SearchServiceSubSystemDelegator.java:133)
        at jdk.internal.reflect.GeneratedMethodAccessor789.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:80)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:53)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:166)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
        at com.sun.proxy.$Proxy36.query(Unknown Source)
        at org.alfresco.repo.jscript.Search.queryResultMeta(Search.java:1016)
        ... 100 more

Для лучшей читаемости декодированный URL-адрес POST для solr:

/solr/#/alfresco-2/alfresco?wt=json&fl=DBID,score&rows=50&shards=solr.mycompany.com:8983/solr/#/alfresco-0,solr.mycompany.com:8983/solr/#/alfresco-1,solr.mycompany.com:8983/solr/#/alfresco-2,solr.mycompany.com:8983/solr/#/alfresco-3&df=TEXT&start=0&locale=*&alternativeDic=DEFAULT_DICTIONARY&sort=@cm:modified+desc&fq={!afts}AUTHORITY_FILTER_FROM_JSON&fq={!afts}TENANT_FILTER_FROM_JSON

Кому-нибудь уже удалось настроить сегментирование в Alfresco Search Services (1.3.x, 1.4) и Alfresco 6.1 Community? У кого-нибудь есть намек, что происходит не так? Alfresco, похоже, не использует стандартные URL-адреса solr для поиска в сегментированном индексе, поэтому я почему-то не понимаю, как заставить это работать.


person Heiko Robert    schedule 09.12.2019    source источник
comment
некоторый успех: в alfresco-global.properties это должно быть /solr/alfresco (без знака решетки). дополнительно: при настройке solr без ssl общий доступ работает, но не лучше масштабируется, если работает только с одного jvm   -  person Heiko Robert    schedule 09.12.2019
comment
MCVE Пожалуйста, покажите соответствующий код и точно укажите проблему или ошибку. Описание с трассировкой стека недостаточно. Также см. Как создать минимальный, полный и проверяемый пример.   -  person jww    schedule 14.12.2019
comment
@jww: чего тебе не хватает в моем MCVE? Я описал продукт, точный конфиг, как воспроизвести ошибку, трассировку стека, которую я получил, и документацию, которую я использовал. stackoverflow.com/help/minimal-reproducible-example   -  person Heiko Robert    schedule 15.12.2019


Ответы (1)


чтобы ответить на мой собственный вопрос: пример Создание осколков Solr вручную doc должен быть без знака решетки в URL-адресе, но не работает, если solr работает с поддержкой SSL.

solr6.store.mappings.value.solrMappingAlfresco.nodeString=solr.mycompany.com:8983/solr/alfresco
solr6.store.mappings.value.solrMappingAlfresco.numShards=4
solr6.store.mappings.value.solrMappingAlfresco.replicationFactor=1

solr6.store.mappings.value.solrMappingArchive.nodeString=solr.mycompany.com:8983/solr/archive
solr6.store.mappings.value.solrMappingArchive.numShards=4
solr6.store.mappings.value.solrMappingArchive.replicationFactor=1

в качестве альтернативы можно использовать DynamicShardRegistration, который не задокументирован для работы в версии сообщества, но работает, если вы установите

useDynamicShardRegistration=true

в alfresco-global.properties

см. также обсуждение в https://github.com/Alfresco/SearchServices/issues/232

person Heiko Robert    schedule 15.12.2019
comment
На данный момент для нас шардинг не является правильным путем. Разделение помогает повысить производительность только в том случае, если у вас также есть несколько систем хранения (учитывая, что вы не можете поместить весь индекс в ОЗУ). При работе в общем хранилище, таком как SAN, сегментирование увеличивает нагрузку на стек. Производительность поиска одинакова для нашей проблемы с производительностью — с шардингом или без него. Поиск Alfresco 5.2/solr4 выполняется в 3-5 раз быстрее на той же инфраструктуре / ~. Мне кажется, что плохая производительность поиска вызвана изменениями в solr6 по сравнению с solr4 или другим способом построения индекса, выполненным командой ASS. - person Heiko Robert; 15.01.2020
comment
Если у вас корпоративная версия, обратитесь за советом к своему TAM, это часть вашей подписки :) Вы изменили способ индексации файлов? Полнотекстовый индекс или индекс свойств? Существует также способ разделить ваш индекс на меньший/больший фрагмент. Может быть, переиндексировать с помощью rerank? - person prignony; 17.01.2020
comment
Это СЕ. Мы ничего не меняли, кроме перехода с solr4 на ASS и Alfresco 6.1. Индекс воссоздается с использованием повторного ранжирования и повторной активации идентификаторов/предполагаемых свойств. - person Heiko Robert; 22.01.2020
comment
У нас нет времени и бюджета в этом месяце, чтобы копать глубже, но самая поразительная разница между solr4 и ASS заключается в том, что процессор ожидает, а память большую часть времени не используется, хотя у jvm много ресурсов (ОЗУ/ЦП). Поэтому я предполагаю, что некоторые изменения в solr6 и/или ASS вызывают эту плохую производительность. Шардинг не работает с неэффективным кодированием... - person Heiko Robert; 22.01.2020
comment
Я вижу, что есть большая ошибка, которая замедляет все для версии 6.4.0, 6.4.1 solr, исправленная в 6.4.2, не могли бы вы проверить версию, которую вы используете? cwiki.apache.org/confluence/display/SOLR/ - person prignony; 23.01.2020
comment
@prignony Спасибо за ваш отзыв! Alfresco Search Services 1.4.0 включает Solr 6.6.5 - person Heiko Robert; 24.01.2020