如何编写Solr查询语句根据id批量获取指定文档
Solr批量查询指定ID范围文档的实现方法
如果需要查询ID为1到10的所有文档,不需要逐个枚举ID值,根据你的ID字段类型和使用场景可以选择以下两种写法:
- 连续ID范围查询(ID为数值类型时优先使用)
直接使用Solr的范围查询语法即可实现闭区间匹配:q=id:[1 TO 10]
该语法会匹配ID值大于等于1、小于等于10的所有文档,语法简洁查询性能高。如果需要开区间匹配,可以把方括号换成大括号,比如id:{1 TO 10}会匹配ID大于1小于10的文档。 - 批量离散ID查询(适用于非连续ID场景)
如果需要匹配的ID不连续,或者ID是字符串类型,可以用terms查询语法批量匹配,避免写多个OR条件:q={!terms f=id}1,2,3,4,5,6,7,8,9,10
该写法底层会走批量词条匹配,性能比拼接多个id:xx OR id:xx的查询语句高很多,适合一次查询几十到上百个指定ID的场景。
注意:如果你的ID字段是字符串类型,且存储的数字是补零格式(比如
001、010),需要调整查询值和字段格式对齐,否则会出现匹配失败的问题。
内容的提问来源于stack exchange,提问作者ab AL
相关产品推荐
相关产品推荐

