跨域字段掩码查询
编辑跨域字段掩码查询编辑
包装器,允许跨域查询通过虚构其搜索字段来参与复合单字段跨域查询。
这可以用来支持跨不同字段的查询,例如 span-near
或 span-or
,这在通常情况下是不允许的。
跨域字段掩码查询与 多字段 结合使用时非常宝贵,当相同内容使用多个分析器进行索引时。例如,我们可以使用标准分析器对字段进行索引,该分析器将文本分解为单词,并再次使用英语分析器对单词进行词干提取。
示例
response = client.search( body: { query: { span_near: { clauses: [ { span_term: { text: 'quick brown' } }, { span_field_masking: { query: { span_term: { 'text.stems' => 'fox' } }, field: 'text' } } ], slop: 5, in_order: false } }, highlight: { require_field_match: false, fields: { "*": {} } } } ) puts response
GET /_search { "query": { "span_near": { "clauses": [ { "span_term": { "text": "quick brown" } }, { "span_field_masking": { "query": { "span_term": { "text.stems": "fox" } }, "field": "text" } } ], "slop": 5, "in_order": false } }, "highlight": { "require_field_match" : false, "fields": { "*": {} } } }
注意:span_field_masking
查询可能具有意外的评分和突出显示行为。这是因为查询返回并突出显示掩码字段,但评分和突出显示是使用原始字段的词语统计信息和偏移量完成的。
注意:为了使突出显示工作,参数:require_field_match
应该在突出显示器上设置为 false
。