无法在Solr 6.0中添加新的动态字段

时间:2016-05-03 21:06:01

标签: solr

我在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 字段已正确映射,但我仍然可以搜索它? screen-shot of Solr showing mapping of actual field to dynamic field

有谁知道这里的不正确之处?

2 个答案:

答案 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 ,或者创建另一个不带该标志的类似类型。或者在字段定义中明确覆盖它。