Solr 嵌套架构

发布于 2025-01-16 07:37:37 字数 3681 浏览 2 评论 0原文

我正在尝试在 Solr 中索引嵌套文档,但它不接受动态字段并以 HTTP 400 响应“SolrError:Solr 响应错误(HTTP 400):[原因:错误: [doc=bcb8eccb1f57f135785347a7e229e2aeb83ee07ddc5ad0e1b1b403a13cce2911]未知字段'aggre_base_on_s'] ”。

下面是我的 Json 结构: 输入图片此处描述

Solr schema.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!-- ## Fields definition -->
<!-- Base fields -->
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="_version_" type="plong" indexed="false" stored="false" multiValued="false" docValues="true"/>
<uniqueKey>id</uniqueKey>

<!-- ## Nested documents -->
<field name="_root_" type="string" indexed="true" stored="true" docValues="false" />
<fieldType name="nest_path" class="solr.NestPathField" />
<field name="_nest_path_" type="nest_path" stored="true"/>
<field name="doc_type" type="string" multiValued="false" indexed="true" required="true" stored="true" />


<fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
<fieldType name="plong" class="solr.LongPointField"/>
<fieldType name="date" class="solr.DatePointField"/>
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" multiValued="false"/>
<fieldtype name="binary" class="solr.BinaryField"/>
<fieldType name="int" class="solr.IntPointField"/>
<fieldType name="float" class="solr.FloatPointField"/>
<fieldType name="long" class="solr.LongPointField"/>
<fieldType name="double" class="solr.DoublePointField"/>
<fieldType name="text_ws" class="solr.TextField" omitNorms="true" sortMissingLast="true"/>

<!--
  Dynamic field definitions.  If a field name is not found, dynamicFields
  will be used if the name matches any of the patterns.  RESTRICTION: the
  glob-like pattern in the name attribute must have a "*" only at the start
  or the end.  EXAMPLE:  name="*_i" will match any field ending in _i (like
  myid_i, z_i) Longer patterns will be matched first.  if equal size
  patterns both match, the first appearing in the schema will be used.
-->

<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
<dynamicField name="*_mi" type="int" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_s" type="string" indexed="true" stored="true"/>
<dynamicField name="*_ms" type="string" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_l" type="long" indexed="true" stored="true"/>
<dynamicField name="*_ml" type="long" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_t" type="text_ws" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_mt" type="text_ws" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
<dynamicField name="*_mb" type="boolean" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_f" type="float" indexed="true" stored="true"/>
<dynamicField name="*_mf" type="float" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_d" type="double" indexed="true" stored="true"/>
<dynamicField name="*_md" type="double" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
<dynamicField name="*_mdt" type="date" indexed="true" stored="true" multiValued="true"/>

I am trying to index nested document in Solr, but it is not accepting dynamic field and responded with HTTP 400 as "SolrError: Solr responded with an error (HTTP 400): [Reason: ERROR: [doc=bcb8eccb1f57f135785347a7e229e2aeb83ee07ddc5ad0e1b1b403a13cce2911] unknown field 'aggre_base_on_s']
".

Below is my structure of Json:
enter image description here

Solr schema.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!-- ## Fields definition -->
<!-- Base fields -->
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="_version_" type="plong" indexed="false" stored="false" multiValued="false" docValues="true"/>
<uniqueKey>id</uniqueKey>

<!-- ## Nested documents -->
<field name="_root_" type="string" indexed="true" stored="true" docValues="false" />
<fieldType name="nest_path" class="solr.NestPathField" />
<field name="_nest_path_" type="nest_path" stored="true"/>
<field name="doc_type" type="string" multiValued="false" indexed="true" required="true" stored="true" />


<fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
<fieldType name="plong" class="solr.LongPointField"/>
<fieldType name="date" class="solr.DatePointField"/>
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" multiValued="false"/>
<fieldtype name="binary" class="solr.BinaryField"/>
<fieldType name="int" class="solr.IntPointField"/>
<fieldType name="float" class="solr.FloatPointField"/>
<fieldType name="long" class="solr.LongPointField"/>
<fieldType name="double" class="solr.DoublePointField"/>
<fieldType name="text_ws" class="solr.TextField" omitNorms="true" sortMissingLast="true"/>

<!--
  Dynamic field definitions.  If a field name is not found, dynamicFields
  will be used if the name matches any of the patterns.  RESTRICTION: the
  glob-like pattern in the name attribute must have a "*" only at the start
  or the end.  EXAMPLE:  name="*_i" will match any field ending in _i (like
  myid_i, z_i) Longer patterns will be matched first.  if equal size
  patterns both match, the first appearing in the schema will be used.
-->

<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
<dynamicField name="*_mi" type="int" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_s" type="string" indexed="true" stored="true"/>
<dynamicField name="*_ms" type="string" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_l" type="long" indexed="true" stored="true"/>
<dynamicField name="*_ml" type="long" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_t" type="text_ws" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_mt" type="text_ws" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
<dynamicField name="*_mb" type="boolean" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_f" type="float" indexed="true" stored="true"/>
<dynamicField name="*_mf" type="float" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_d" type="double" indexed="true" stored="true"/>
<dynamicField name="*_md" type="double" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
<dynamicField name="*_mdt" type="date" indexed="true" stored="true" multiValued="true"/>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云雾 2025-01-23 07:37:37

我发现配置未重新加载因此缺少动态字段的问题。

I found the issue with config not being reloaded therefore missing dynamic field.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文