当前位置: 首页 > 面试题库 >

elasticsearch的Query DSL中must和filter有什么区别?

颛孙麻雀
2023-03-14
问题内容

我是elasticsearch的新手,在must和filter之间感到困惑。我想在条款之间执行and操作,所以我这样做了

开机自检/ xyz / _search

{
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "city": "city1"
                    }
                },
                {
                    "term": {
                        "saleType": "sale_type1"
                    }
                }
            ]
        }
    }
}

这给了我所需的结果,既匹配了术语,又使用了像这样的过滤器

开机自检/ xyz / _search

{
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "city": "city1"
                    }
                }
            ],
            "filter": {
                "term": {
                    "saleType": "sale_type1"
                }
            }
        }
    }
}

我得到相同的结果,所以什么时候应该使用must以及什么时候应该使用filter?有什么区别?


问题答案:

must有助于得分。在中filter,查询的分数将被忽略。

must和中filter,子句(查询)必须出现在匹配的文档中。这就是获得相同结果的原因。

您可以检查此链接

得分

每个文档的相关性得分由正浮点数(称为)表示_score。越高_score,文档越相关。

查询子句_score为每个文档生成一个。

要知道如何计算分数,请参考此链接



 类似资料:
  • 发布/xyz/_search 我得到了相同的结果,那么什么时候应该使用must和什么时候应该使用filter呢?有什么区别?

  • 我无法理解弹性搜索中的 Bool 筛选器和 And 筛选器之间的区别。 上下文:假设我的文档具有字段:X、Y、Z。 每个字段可以有多个值。 目标: 我想在以下意义上向弹性搜索发送一个查询:(X=value eX1 OR X=value eX2)AND(Y=value eY1 OR Y=value eY2 OR…)AND(Z=value eZ1 OR Z=value eZ2 OR……) 尝试: 我是

  • 本文向大家介绍jQuery中的Grep和Filter有什么区别?,包括了jQuery中的Grep和Filter有什么区别?的使用技巧和注意事项,需要的朋友参考一下 该方法找到一个元素,然后该方法返回匹配特定条件的元素。 jQuery grep函数 示例 该函数用于查找数组的元素。您可以尝试运行以下代码以了解如何使用, jQuery过滤器功能 jQuery方法将返回与特定条件匹配的元素。 示例 您可

  • 问题内容: 我知道ElasticSearch是基于Apache Lucene构建的,但是我想知道两者之间的显着差异。 问题答案: Lucene是一个 Java库 。您可以将其包含在项目中,并使用函数调用来引用其功能。 Elasticsearch是一个 JSON 基于, 分布式 , 网络服务器 建在Lucene的。尽管是Lucene在做下面的实际工作,但是Elasticsearch为我们提供了一个在

  • 问题内容: 拥有所有领域的两者之间的区别使我难以理解。 如果我的文件有: 我知道这是一个包含所有字段的字段。但是呢?这是否意味着“名称”被保存了几次(在中和两次),从而增加了文档占用的磁盘空间? 一次存储的领域,曾经为“名” ,并一次?关于“数字”,什么是它存储在,即使没有? 什么时候应该在查询中使用? 我可以禁用的用例是什么,然后将拒绝使用什么功能? 问题答案: 它与lucene中的索引字段和存

  • 解决编码问题的方法可能有很多: > 编码过滤器,如Spring MVC UTF-8编码 在Tomcat的server.xml中设置uriencoding=utf8,如http://struts.apache.org/release/2.1.x/docs/how-to-support-utf-8-uriencoding-with-tomcat.html。 它的输出是相同的。所以实际上,路径变量是用I