像这样的查询:
&q=im_field_teams:(4667 AND 4675)
将返回如下结果:
docs: [
{
im_field_teams: [
4675,
4667
]
},
哪个好极了!当然,我也得到这样的价值观:
{
im_field_teams: [
4660,
4702,
4675,
4667,
4684,
]
}
这正是我试图避免的。
我想要一个"只有"或AND AND NOT *或类似的东西。匹配在多值字段中仅包含一对值(不多,不少)的文档。
(对于它值得这样做:似乎有效,但感觉非常错误。)
&q=im_field_teams:(4667 AND 4675) -im_field_teams:[0 TO 4666] -im_field_teams:[4668 TO 4674] -im_field_teams:[4676 TO *]
答案 0 :(得分:0)
没有直接的方法可以做到这一点。但是可以使用变通方法/可能的选项(见下文),但可能有更简单的查询语法。如果我们有重叠的范围和多个AND子句,那么带有否定的查询有时会变得棘手。
在索引期间,在多值字段中添加另一个具有数组大小的字段。例如,如果文档具有(4660,4702,4675,4667,4684),则此字段的大小为5.在查询时,根据要添加的条目数包括此字段。在这种情况下,如果您要搜索q=im_field_teams:(4667 AND 4675)
,请添加另一个条款AND im_field_teams_size:2
条件。这将确保所有条款匹配且仅那些。