lucene Kibana查询完全匹配

fzsnzjdm  于 2022-11-07  发布在  Lucene
关注(0)|答案(5)|浏览(342)

我想知道如何查询字段以精确匹配字符串。
我实际上是这样尝试查询的:

url : "http://www.domain_name.com"

返回所有以http://www.domain_name.com开头的字符串。

ar7v8xwq

ar7v8xwq1#

我也遇到过类似的问题,如果发现.raw解决了这个问题-在您的示例中,请尝试

url.raw : "http://www.domain_name.com"
mpgws1up

mpgws1up2#

只是让@德智的评论更有能见度。

in newer version of ES(5.x, 6.x), 
you should use `url.keyword` instead, 
as they have changed to a new keyword type.

因此,它将是:

url.keyword : "http://www.domain_name.com"
1wnzp6jl

1wnzp6jl3#

不支持现成的精确值。
http://blogs.perl.org/users/mark_leighton_fisher/2012/01/stupid-lucene-tricks-exact-match-starts-with-ends-with.html
Lucene不提供精确的字段匹配,例如只匹配“Acer Negundo Ab”和“Acer Negundo Ab”(不包括“Acer Negundo Ab IgG”)。Lucene也不提供“开头为”或“结尾为”功能。幸运的是,有一些变通办法。

ehxuflar

ehxuflar4#

"Cannot change the info of a user"

若要搜索精确的字符串,需要将字符串括在双引号中。如果不使用引号,示例中的搜索将匹配包含以下单词之一的任何文档:“无法”OR“更改”OR“的”OR“信息”OR“的”OR“用户”。
Kibana 6.5版

83qze16e

83qze16e5#

根据你的查询,它似乎很好。
以下是精确匹配的语法:
fieldname : *string*

对于matchign子字符串,使用通配符(*)、
语法:
fieldname : *string*
此外,无论您应用了什么查询;查询是特定输出组件的Query Criteria的一部分。
因此,我建议您检查是否有任何wild card应用在您的搜索。

相关问题