Solr Intermittent Error 401 с запросом JSON Facet для получения количества всех коллекций - PullRequest
0 голосов
/ 25 апреля 2019

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..

...