Solr 解决方案:部分文档更新还是加入?
我在solr中有一个产品索引(该索引是通过从mysql/jdbc导入数据更新的) 产品可以在某些商店中提供,也可以不提供:现在我们在索引中有这个模型(商店是一个多值int字段)Solr 解决方案:部分文档更新还是加入?,solr,Solr,我在solr中有一个产品索引(该索引是通过从mysql/jdbc导入数据更新的) 产品可以在某些商店中提供,也可以不提供:现在我们在索引中有这个模型(商店是一个多值int字段) 将经常更改的字段存储在中,使用外部工具更新solr文档,仅更改数组中的值 这是在solr中建模的最佳模式吗? 最好先创建单独的文档,然后再加入?这取决于您经常做的事情,只更新整个文档可能没什么问题……但是,如果这将是一个问题,并且您希望由于不断更新而优化负载,您有几个选项: 您有一些限制(如何以数字形式对存储列表进行编码
将经常更改的
字段存储在中,使用外部工具更新solr文档,仅更改数组中的值
这是在solr中建模的最佳模式吗?
最好先创建单独的文档,然后再加入?这取决于您经常做的事情,只更新整个文档可能没什么问题……但是,如果这将是一个问题,并且您希望由于不断更新而优化负载,您有几个选项:
我更喜欢1本身,与Solr的其余部分更为集成…3和4不适合imho。就地更新要求字段为单值字段,因此它不适合问题中给出的结构。我可能只会使用OP中给出的结构-我认为使用DIH比文档结构更像是一个性能问题。我在编辑中解决了这个问题…取决于存储的数量,但很可能信息可以编码为数字。如果编码(即作为位掩码),查询通常会更困难因此,这也取决于该字段的使用方式。以直截了当的方式进行,然后在问题出现时进行优化,这是一个好的计划(如您所领导的)。“经常”可能意味着每隔几分钟(从2到5分钟)。
存储
字段包含数百个值,并且总是在每个查询中使用在这种情况下,“就地更新”对我来说似乎很复杂。我将看一看外部文件,这对我来说是新的东西当然取决于你的索引大小,集群资源,有多少文档被更改等等,但每隔几分钟看起来并没有那么糟糕。做测试!
{
id:
product_id:
stores: [ store_id, store_id, ...]
...
}