我有一个文本字段,其中包含一个xml文档,我尝试找到这种匹配:
<Payer> [...] bic=\"123456789\" [...] </Payer>
使用以下查询:
{
"query": {
"span_near" : {
"clauses" : [
{ "span_term" : { "field" : "payer" }},
{ "span_term" : { "field" : "bic" }},
{ "span_term" : { "field" : "123456789" }},
{ "span_term" : { "field" : "payer"}}
],
"slop" : 500,
"in_order" : true
}
}
}
问题是,如果xml-document包含以下内容,有时会出现错误匹配:
<Payer>bic=\"111111111\"</Payer><Payee>bic=\"123456789\"</Payee><Payer>bic=\"222222222\"</Payer>
查询找到PayeE
而不是PayeR
。从elastic
的角度来看,它仍然有效。
我可以阻止这种“贪婪”搜索吗?
据我所知,this主题regexp不是一个选项,因为“ Elasticsearch(和lucene)不支持完全与Perl兼容的正则表达式语法”。这意味着regexp-query
匹配令牌,而不是整个字符串。
我还试图制作span_term
或/payer
或\\/payer
的最后</payer
,但它根本找不到任何内容。