我正在使用一个工作正常的过滤器的文档查询。当我尝试使用查询ID过滤percolator查询哪个文档渗透时,它不会返回任何结果。例如:
{
"doc" : {
"text" : "This is the text within my document"
},
"highlight" : {
"order" : "score",
"pre_tags" : ["<example>"],
"post_tags" : ["</example>"],
"fields" : {
"text" : { "number_of_fragments" : 0 }
}
},
"filter":{"ids":{"values":[11,15]}}
,
"size" : 100
}
我确信这些ID是正确的,但总是获得"matches" : [ ]
。当我不使用过滤器时,ES会检索正确的匹配项。
谢谢你的帮助。
答案 0 :(得分:1)
我想我已经解决了。它似乎是the filter only works on the "metadata" fields,这意味着您必须将自定义字段添加到过滤器中索引的查询中,以便在需要时使用它们进行过滤。 使用我之前的示例,我必须在诸如以下的过滤器查询中编制索引:
{
"query" : {
"match_phrase" : {
"text" : "document"
}
},
"id" : 11
}
手动添加&#34;&#34;冗余 id 字段,以便稍后将其用作过滤器参考。 在渗透时,你必须使用类似的东西:
{
"doc" : {
"text" : "This is the text within my document"
},
"filter":{"match":{"id":11}},
"highlight" : {
"order" : "score",
"pre_tags" : ["<example>"],
"post_tags" : ["</example>"],
"fields" : {
"text" : { "number_of_fragments" : 0 }
}
},
"size" : 100
}
仅使用该过滤器查询。可以找到补充信息here。