DSE版本:6.7
由于以下代码适用于DSE java驱动程序版本1.8.2,具有以下代码
Statement selectQuery = QueryBuilder.select().all().from(table) .where(**QueryBuilder.eq**("solr_query", "{"q":"createdat:[2021-10-15T14:03:37.817Z TO 2021-12-15T07:23:14.025Z]","sort":"updatedate desc", "paging":"driver"}")) .setConsistencyLevel(ConsistencyLevel.valueOf("LOCAL_ONE")); ResultSet rs= super.getManager().getSession().execute(selectQuery);
升级到DSE java驱动程序版本:4.13.0查询是:-
Select selectQuery = selectFrom(table).all().whereColumn("solr_query").isEqualTo(literal("{"q":"createdat:[2021-10-15T14:03:37.817Z TO 2021-12-15T07:23:14.025Z]","sort":"updatedate desc", "paging":"driver"}")); SimpleStatement statement = selectQuery.build().setConsistencyLevel(DefaultConsistencyLevel.valueOf("LOCAL_ONE")); ResultSet rs = this.session.execute(statement );
*-->给出以下异常:
com.datatax.oss.driver.api.core.servererrors.InvalidQueryException:碎片12.345.678.90上的错误:字段缓存已禁用,请将字段=updatedate设置为docValues=true并重新索引。或者,如果字段缓存不会超过堆使用率,则在请求参数中放置useFieldCache=true。
我不知道如何解决这个问题。
因此,在查看错误消息时。。。
将
field=updatedate
设置为docValues=true
并重新索引。
只是想知道,但你试过这个吗?这应该是良好的第一步。
首先,我真的很好奇你是如何获得这个版本的:
datatax.oss 4.13.0版本
因为它看起来不像任何官方DSE产品版本,如5.0.x或6.8.x。过去有4.8.x,但从未出现过oss4.13。
现在针对问题本身:这可能适用https://docs.datastax.com/en/upgrade/doc/upgrade/datastax_enterprise/upgdDSE50.html#Preparingtoupgrade
很难说,因为DSE版本具有误导性。。。
虽然强烈建议使用docValues
,但也提出了设置dse.yaml
:的方法
您可以重新启用字段缓存(solr_field_cache_enabled:true(,以允许运行查询,但不允许重新索引。
在为相关碎片重建Solr核心后,InvalidQueryException
问题得到了解决。感谢大家在这个问题上花时间:(