[
https://issues.apache.org/jira/browse/SOLR-16916?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17779189#comment-17779189
]
Chris M. Hostetter commented on SOLR-16916:
-------------------------------------------
I'm not really clear what happened here ... or what was intended to happen here?
* The Jira description indicates it's a bug that {{defType}} was ignored by
the JSON Query DSL since 7.2 until this issue "fixed" it
* The CHANGES entry suggests that {{defType}} is now (starting with 9.4) being
intentionally ignored by the Query DSL
* Meanwhile the only test added by this Jira sets a default
{{defType=edismax}} as a request handler default ... butthen only seems to test
that a {{lucene}} query works – w/o testing any {{edismax}} features?
Meanwhile, on the user mailing list, people are reporting that using
{{defType=edismax}} worked just fine with SOlr 9.1, but has broken in 9.4 (i'm
assuming bu this change)...
so WTF?
----
With 9.1.0
{noformat}
hossman@slate:~/lucene/solr [j11] [tags/releases/solr/9.1.0] $ curl
'http://localhost:8983/solr/techproducts/query' -d '
{
"query": "+all:belkin",
"fields": "id compName_s",
"offset": 0,
"limit": 10,
"params": {
"defType": "edismax",
"f.all.qf": "id compName_s address_s"
}
}
'
{
"responseHeader":{
"status":0,
"QTime":42,
"params":{
"json":"\n{\n \"query\": \"+all:belkin\",\n \"fields\": \"id
compName_s\",\n \"offset\": 0,\n \"limit\": 10,\n \"params\": {\n
\"defType\": \"edismax\",\n \"f.all.qf\": \"id compName_s
address_s\"\n }\n}\n"}},
"response":{"numFound":1,"start":0,"numFoundExact":true,"docs":[
{
"id":"belkin",
"compName_s":"Belkin"}]
}}
{noformat}
With 9.4.0 ...
{noformat}
hossman@slate:~/lucene/solr [j11] [tags/releases/solr/9.4.0] $ curl
'http://localhost:8983/solr/techproducts/query' -d '
{
"query": "+all:belkin",
"fields": "id compName_s",
"offset": 0,
"limit": 10,
"params": {
"defType": "edismax",
"f.all.qf": "id compName_s address_s"
}
}
'
{
"responseHeader":{
"status":400,
"QTime":1,
"params":{
"json":"\n{\n \"query\": \"+all:belkin\",\n \"fields\": \"id
compName_s\",\n \"offset\": 0,\n \"limit\": 10,\n \"params\": {\n
\"defType\": \"edismax\",\n \"f.all.qf\": \"id compName_s
address_s\"\n }\n}\n"
}
},
"error":{
"metadata":["error-class","org.apache.solr.common.SolrException","root-error-class","org.apache.solr.common.SolrException"],
"msg":"undefined field all",
"code":400
}
{noformat}
stack trace shows edismax is ignored in 9.4...
{noformat}
2023-10-24 17:21:58.312 ERROR (qtp1535026957-17) [ x:techproducts
t:localhost-26] o.a.s.h.RequestHandlerBase Client exception =>
org.apache.solr.common.SolrException: undefined field all
at
org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1478)
org.apache.solr.common.SolrException: undefined field all
at
org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1478)
~[?:?]
at
org.apache.solr.schema.IndexSchema$SolrQueryAnalyzer.getWrappedAnalyzer(IndexSchema.java:500)
~[?:?]
at
org.apache.lucene.analysis.DelegatingAnalyzerWrapper$DelegatingReuseStrategy.getReusableComponents(DelegatingAnalyzerWrapper.java:83)
~[?:?]
at org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:184)
~[?:?]
at
org.apache.lucene.util.QueryBuilder.createFieldQuery(QueryBuilder.java:256)
~[?:?]
at
org.apache.solr.parser.SolrQueryParserBase.newFieldQuery(SolrQueryParserBase.java:527)
~[?:?]
at
org.apache.solr.parser.QueryParser.newFieldQuery(QueryParser.java:68) ~[?:?]
at
org.apache.solr.parser.SolrQueryParserBase.getFieldQuery(SolrQueryParserBase.java:1140)
~[?:?]
at
org.apache.solr.parser.SolrQueryParserBase.handleBareTokenQuery(SolrQueryParserBase.java:856)
~[?:?]
at org.apache.solr.parser.QueryParser.Term(QueryParser.java:454) ~[?:?]
at org.apache.solr.parser.QueryParser.Clause(QueryParser.java:293)
~[?:?]
at org.apache.solr.parser.QueryParser.Query(QueryParser.java:173) ~[?:?]
at
org.apache.solr.parser.QueryParser.TopLevelQuery(QueryParser.java:143) ~[?:?]
at
org.apache.solr.parser.SolrQueryParserBase.parse(SolrQueryParserBase.java:274)
~[?:?]
at org.apache.solr.search.LuceneQParser.parse(LuceneQParser.java:51)
~[?:?]
at org.apache.solr.search.QParser.getQuery(QParser.java:188) ~[?:?]
at
org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:172)
~[?:?]
at
org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:431)
~[?:?]
at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:226)
~[?:?]
at org.apache.solr.core.SolrCore.execute(SolrCore.java:2901) ~[?:?]
at
org.apache.solr.servlet.HttpSolrCall.executeCoreRequest(HttpSolrCall.java:875)
~[?:?]
at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:561)
~[?:?]
at
org.apache.solr.servlet.SolrDispatchFilter.dispatch(SolrDispatchFilter.java:262)
~[?:?]
at
org.apache.solr.servlet.SolrDispatchFilter.lambda$doFilter$0(SolrDispatchFilter.java:219)
~[?:?]
at
org.apache.solr.servlet.ServletUtils.traceHttpRequestExecution2(ServletUtils.java:246)
~[?:?]
at
org.apache.solr.servlet.ServletUtils.rateLimitRequest(ServletUtils.java:215)
~[?:?]
at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:213)
~[?:?]
at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:195)
~[?:?]
at
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210)
~[jetty-servlet-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
~[jetty-servlet-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
~[jetty-servlet-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598)
~[jetty-security-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
~[jetty-servlet-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.InetAccessHandler.handle(InetAccessHandler.java:228)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:141)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:301)
~[jetty-rewrite-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:822)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
~[jetty-server-10.0.17.jar:10.0.17]
at org.eclipse.jetty.server.Server.handle(Server.java:563)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598)
~[jetty-server-10.0.17.jar:10.0.17]
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753)
~[jetty-server-10.0.17.jar:10.0.17]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287)
~[jetty-server-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
~[jetty-io-10.0.17.jar:10.0.17]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
~[jetty-io-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
~[jetty-io-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
~[jetty-util-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
~[jetty-util-10.0.17.jar:10.0.17]
at
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
~[jetty-util-10.0.17.jar:10.0.17]
at java.lang.Thread.run(Thread.java:829) [?:?]
{noformat}
> JSON Query DSL doesn't work if defType isn't lucene
> ---------------------------------------------------
>
> Key: SOLR-16916
> URL: https://issues.apache.org/jira/browse/SOLR-16916
> Project: Solr
> Issue Type: Bug
> Components: query parsers
> Affects Versions: 7.2
> Reporter: David Smiley
> Assignee: David Smiley
> Priority: Minor
> Fix For: 9.4
>
> Time Spent: 2h
> Remaining Estimate: 0h
>
> If the [JSON Query DSL|https://solr.apache.org/guide/8_4/json-query-dsl.html]
> is used (POSTing JSON), it requires that the default "lucene" query parser is
> used. If for some reason defType is set, like in the defaults section of the
> request handler, then this doesn't work. Internally, the JSON is rewritten
> to local-params syntax which requires the default parser, not another like
> edismax.
> This behavior broke in 7.2 when other parsers stopped processing local-params
> in the name of security.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]