Solr периодически возвращает ошибку 401, когда мы пытались запросить счетчик для всех коллекций, используя JSON Facet.
Если мы поместим в шарды только одну коллекцию (может быть любую коллекцию), ошибки не будет,и он всегда может произвести правильный вывод.Если мы добавим 2 коллекции, ошибка не будет возникать в 90% случаев (только в 10% случаев возникнет проблема).
Однако, если мы добавим 3 или более коллекций (может быть любой изколлекции), эта проблема будет продолжать происходить.
Эта проблема не возникает в более ранней версии Solr (например, Solr 7.6, 7.7)
Я использую приведенный ниже аспект JSON для получения количества всех различных коллекций в одном запросе.
https://localhost:8983/solr/collection1/select?q=testing&shards=https://localhost:8983/solr/collection1,https://localhost:8983/solr/collection2,https://localhost:8983/solr/collection3,https://localhost:8983/solr/collection4,https://localhost:8983/solr/collection5,https://localhost:8983/solr/collection6&rows=0&json.facet={categories: {type: term, field: content_type, limit: 100}}
Ранее в Solr 7.6 и Solr 7.7 этот запрос мог работать правильно, и мымогут выдавать правильный вывод.
{
"responseHeader":
{ "zkConnected":true, "status":0, "QTime":24}
,
"response":
{"numFound":41200,"start":0,"maxScore":12.993215,"docs":[] }
,
"facets":{
"count":41200,
"categories":{
"buckets":[
{ "val":"collection1", "count":26213}
,
{ "val":"collection2", "count":12075}
,
{ "val":"collection3", "count":1947}
,
{ "val":"collection4", "count":850}
,
{ "val":"collection5", "count":111}
,
{ "val":"collection6", "count":4}
]}}}
Однако в новом Solr 8.0.0 этот запрос может работать только изредка.В большинстве случаев мы получим следующую ошибку «Ошибка 401 требует аутентификации»:
<code>{
"responseHeader":
{ "zkConnected":true, "status":401, "QTime":11}
,
"error":{
"metadata":[
"error-class","org.apache.solr.client.solrj.impl.Http2SolrClient$RemoteSolrException",
"root-error-class","org.apache.solr.client.solrj.impl.Http2SolrClient$RemoteSolrException"],
"msg":"Error from server at null: Expected mime type application/octet-stream but got text/html. <html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n<title>Error 401 require authentication</title>\n</head>\n<body><h2>HTTP ERROR 401</h2>\n<p>Problem accessing /solr/collection6/select. Reason:\n<pre> require authentication
\ n \ n \ n "," code ": 401}}
Эта проблема не возникает в Solr 7.6 и Solr 7.7, хотя я настроил одинаковую аутентификацию для всех версий.
В чем может быть проблема, которая вызывает это?
Ниже приведен формат моего security.json:
{
"authentication":
{ "blockUnknown": true, "class":"solr.BasicAuthPlugin", "credentials":
{"user1":"hyHXXuJSqcZdNgdSTGUvrQZRpqrYFUQ2ffmlWQ4GUTk= E0w3/2FD+rlxulbPm2G7i9HZqT+2gMBzcyJCcGcMWwA="}
},
"authorization":
{ "class":"solr.RuleBasedAuthorizationPlugin", "user-role":
{"user1":"admin"}
,
"permissions":[
{"name":"security-edit", "role":"admin"}
]
}}
Он должен возвращать счетчик для всех коллекций независимо от количества коллекций, например, что возвращалось в более ранней версии Solr..