Я пытаюсь добавить новый приемник запросов с помощью SolR Config API.Для этого я помещаю следующий JSON в конечную точку API Config моего ядра SolR:
{
"add-listener": {
"name": "listener1",
"class": "solr.QuerySenderListener",
"event": "newSearcher",
"queries": [{
"q": "any:whatever",
"rows": "10",
"start": "0"
}
]
}
}
Это действие заполняет файл «configoverlay.json», который переопределяет стандартный solrconfig.XML.Этот файл теперь выглядит следующим образом:
{
"listener": {
"listener1": {
"name": "listener1",
"class": "solr.QuerySenderListener",
"event": "newSearcher",
"queries": [{
"q": "any:whatever",
"rows": "10",
"start": "0"
}
]
}
}
}
По какой-то причине эта структура не подходит для SolR.Я получаю следующую ошибку в журналах SolR:
null:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to org.apache.solr.common.util.NamedList
at org.apache.solr.core.QuerySenderListener.newSearcher(QuerySenderListener.java:47)
at org.apache.solr.core.SolrCore$5.call(SolrCore.java:1835)
at java.util.concurrent.FutureTask.run(Unknown Source)
at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:210)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
И, конечно, запрос, связанный с этим событием, поэтому не выполняется должным образом.
Видимо, запросФормат запроса не соответствует ожидаемому SolR ... Я не нашел ни одного примера обновления или создания событий в документации SolR Config API.Проблема должна быть связана с синтаксисом параметров объектов queries
.
Если вы знаете, как форматировать сообщение json для получения правильного слушателя, дайте мне знать!
Inесли это имеет значение, я использую SolR 5.3.1
ps: смысл делать это через API конфигурации вместо solrconfig.xml, чтобы иметь возможность динамически изменять запросы на нагрев (чтобы отразить изменения конфигурации в нашемпродукт, который использует SolR для поиска).
Гийом