我在solr-6.0.0 / server / solr / configsets / data_driven_schema_configs / conf / managed-schema中添加了一些新的动态字段,如下所示:
<dynamicField name="*_sst" type="string" indexed="false" stored="true" />
<dynamicField name="*_sin" type="string" indexed="true" stored="false" />
然后我启动solr并添加一个集合:
bin/solr start -cloud
bin/solr create -c my_coll -shards 2 -replicationFactor 1
我在导航到http://localhost:8983/solr/#/my_coll/files?file=managed-schema
时看到动态字段被拾取<dynamicField name="*_sst" type="string" indexed="false" stored="true"/>
<dynamicField name="*_sin" type="string" indexed="true" stored="false"/>
但是,当我将文档发送到此集合并进行查询时,我可以通过 * _ sst 字段进行查询(这些字段仅用于存储),我看到 * _ sin 结果中的字段(仅用于索引)。
看到http://localhost:8983/solr/#/my_coll/schema?field=FooPrefix.name2_sst后,它确实显示我的 _sst 字段已正确映射,但我仍然可以搜索它?
有谁知道这里的不正确之处?
答案 0 :(得分:0)
我认为这是因为文件managed-schema.xml
已经定义了很多dynamicFields
。
你的领域必须使用其中一个。
我认为你的领域正在使用
<dynamicField name="*_t" type="text_general" indexed="true" stored="true"/>
或可以使用
<dynamicField name="*_ss" type="strings" indexed="true" stored="true"/>
或者可能还有其他动态字段。
我建议您删除所有不需要的dynamicField
,并保留由您添加的其余内容。
完成此操作后,重新启动服务器并重新索引数据并检查。
答案 1 :(得分:0)
答案在你的截图中。这完全是关于 docValues 。您的属性在字段和类型定义之间累积。 字符串类型的定义现在包含 docValues =“true”。
这意味着即使使用 indexed = false ,精确值搜索仍可用于docValues。而且,从模式版本1.6(在Solr 5.5和6.0中),docValues can be returned即使 stored = false 。
如果您不喜欢,请从字符串类型中删除 docValues = true ,或者创建另一个不带该标志的类似类型。或者在字段定义中明确覆盖它。