我建议您查看有关提升的要求,因为当前的脚本没有太大意义。
另外,请查看elasticsearch
查询DSL的文档。它提供复合查询和简单查询,您可以将它们组合在一起。如错误所示,您不能在自定义分数查询中放入过滤器。您可以在自定义分数查询中使用过滤查询:
{ "query": { "custom_score": { "query": { "filtered" : { "query" : { "match": { "xxx": { "query": "foobar" } } }, "filter" : { "and": [ { "query": { "match": { "yyyy": {"query": "barfoo" } } } } ] } } }, "script": "_score * doc['_score']" } }}
或使用像这样的顶级过滤器:
{ "query": { "custom_score": { "query": { "match": { "xxx": { "query": "foobar" } } }, "script": "_score * doc['_score']" } }, "filter": { "and": [ { "query": { "match": { "yyyy": { "query": "barfoo" } } } } ] }}
这两个选项的区别在于,如果您在搜索请求中也进行了构面,则不会考虑使用顶级过滤器,而如果将过滤器放入查询中,则会考虑它们。
要看的另一件事:如果只有一个子句,则不需要and过滤器。另外,将全文搜索放在过滤器中通常没有任何意义,因为过滤器是可缓存的,并且鉴于全文搜索是免费的并且几乎是不可预测的,因此将它们缓存是浪费的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)