gpt4 book ai didi

elasticsearch - 使用通配符和术语查询的ElasticSearch

转载 作者:行者123 更新时间:2023-12-02 22:25:40 27 4
gpt4 key购买 nike

我是使用Elastic Search的新手,也从未使用Lucene。

我建立这个查询:

  {
"query" : {
"wildcard" : { "referer" : "*.domain.com*" }
},
"filter" : {
"query" : {
"term" : { "first" : "1" }
}
},
"facets" : {
"site_id" : {
"terms" : {
"field" : "site",
"size" : "70"
}
}
}
}

通配符效果很好,但是过滤器一词被忽略了,我做错了什么?

我需要同时使用通配符和条件过滤结果

谢谢!

最佳答案

假设您要在通配符查询结果上应用过滤器,
您可以使用FilteredQuery。但是,您的情况可能更适合作为过滤器。

您使用查询过滤器。取而代之的是,您可以在FilteredQuery中直接使用TermFilter,而不是从TermQuery中进行过滤。 TermFilter应该更快,因为它直接使用TermsEnum。

请注意,筛选器的结果缓存在FilterCache中,并且筛选器速度更快,因为它们不对文档进行任何评分。在您的情况下,即使FilteredQuery的过滤器部分可以快速运行,但是通配符查询也将不必要地进行评分。您可以尝试使用AND过滤器来合并queryfilter(通配符查询)和术语过滤器,而不是FilteredQuery。

要按照您的要求仅使过滤器工作,请尝试以下类似的方法。 (自己没试过)

{
"filtered" : {
"query" : {
"wildcard" : { "referer" : "*.domain.com*" }
},
"filter" : {
"term" : { "first" : "1" }
}
},
"facets" : {
"site_id" : {
"terms" : {
"field" : "site",
"size" : "70"
}
}
}
}

关于elasticsearch - 使用通配符和术语查询的ElasticSearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23036752/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com