更新多值字段,而不是在SOLR索引中获取多个值

时间:2013-09-23 20:19:45

标签: json solr lucene

我正在尝试通过发布版本4.4.0中的RAW JSON数据来更新SOLR索引。

它的更新字段很好,但是在多值字段的情况下,它不存储多个值,而只存储最后一个。

例如 -

我。这是我的架构结构 -

<dynamicField name="amenity_*"  type="text_general"  indexed="true"  stored="true" multiValued="true"/>

II。这是POST json数据 -

   {"add":{ "doc":{"id":"7986","amenity_GENERAL":{"set":"Overnight Parking"}},"boost":1.0,"overwrite":true,"commitWithin":1000},
   "add":{ "doc":{"id":"7986","amenity_GENERAL":{"set":"Pumps"}},"boost":1.0,"overwrite":true,"commitWithin":1000},
   "add":{ "doc":{"id":"7986","amenity_GENERAL":{"set":"Parking Spaces"}},"boost":1.0,"overwrite":true,"commitWithin":1000}}

成功发布后,此ID的更新索引为 -

     {
        "id": "7986",
        "amenity_GENERAL": [
          "Parking Spaces"
        ],
        "_version_": 1446999052093751300
      },

- 从JSON请求中存储最后一个值 - “amenity_GENERAL”。

我不确定,是否需要更改该多值字段的POST JSON结构。

提前致谢。


编辑:此脚本将运行到CRON,因此每次都需要更新索引。如果是多值字段,则需要避免重复值。

1 个答案:

答案 0 :(得分:4)

参考:http://yonik.com/solr/atomic-updates/

set - 设置或替换特定值,或者如果将null指定为新值,则删除该值

add - 为列表添加额外值

即。尝试

"amenity_GENERAL":{"add":"Parking Spaces"}