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

字词查询和匹配项有什么区别?

姬墨竹
2023-03-14
问题内容

我有未分析字符串字段的文档(由映射强制执行或全局设置)。我试图了解两者之间的实际区别是什么

{
    "query": {
        "bool": {
            "must": [
                {"match": {"hostname": "hello"}},
            ]
        }
    }
}

{
    "query": {
        "term": {
            "hostname": "hello"
        }
    }
}

我在术语查询的文档中看到,分析字符串时有区别(这不是我的情况)。 有理由使用termvs match吗?


问题答案:

term查询中,hello不分析搜索到的术语(即),并且将其与倒排索引中存在的术语完全匹配。

match查询中,hello首先分析搜索到的术语(即),然后将其与倒排索引中存在的术语进行匹配。

在你的情况下,由于hostnamenot_analyzed在映射,你的第一选择应该是使用term,因为它是没有意义的分析在搜索时的一个术语用来搜索已经不是在索引时间首先分析了相同的词语查询。



 类似资料:
  • 问题内容: 自从Postgres具备进行连接的能力以来,我一直在阅读它,因为我目前为团队执行复杂的数据转储,其中包含许多效率低下的子查询,这些查询使整个查询花费了四分钟或更长时间。 我知道联接可能会为我提供帮助,但是即使从Heap Analytics中阅读了类似这样的文章,我仍然不太了解。 联接的用例是什么?联接和子查询之间有什么区别? 问题答案: 什么 是 一个加入? 该功能是PostgreSQ

  • 1.在中可以使用哪些选项来创建查询?我看到和,但不确定是否还有其他选项? 2.原生查询和JPQL之间有什么区别?我刚刚意识到使用类名,例如ProductCategory,而本机使用表名,例如product_category。还有其他区别吗?

  • 假设我的索引有两个文档: “Foo Bar” “Bar Foo” 当我对“bar foo”进行常规匹配查询时,两个文档都正确匹配,但它们获得了相等的相关性分数。然而,我希望单词的顺序在评分时是有意义的。换句话说,我希望“Bar Foo”有更高的分数。 因此,我尝试将match查询放在bool查询的must子句中,并包含一个match_prach(具有相同的查询字符串)作为shoul子句。在我使用“

  • 在Access中,还有另一个非常有用的向导,那就是查找不匹配的查询向导。 “查找不匹配查询向导”将创建一个查询,查找一个表中的记录或行,这些记录或行在另一个表中没有相关记录。 正如前面已经讨论过数据如何在查询中连接,以及大多数查询如何查找两个或多个表之间的匹配。 这是Access中的默认连接,例如,如果使用两个表(和)设计查询,并通过连接这两个表,则此查询将只返回匹配的结果。换句话说,已下订单的客

  • 问题内容: Elasticsearch的新功能,试图更好地了解这些查询之间的区别。据我所知,匹配单个项(需要小写的比赛工作?),都和文本字符串匹配。 问题答案: 查询匹配单个术语: 不分析 值。因此,不必根据所索引的内容将其小写。 如果您是在索引时间提供的,并且未分析该值,则以下查询将不会返回任何内容: 如果为查询字段定义了分析器,则查询将分析输入,并查找符合以下条件的文档: 所有条款 必须出现在

  • 这里是Elasticsearch的新内容,并试图更好地理解这些查询之间的差异。据我所知,匹配单个术语(需要小写才能有效匹配?),和都匹配一个文本字符串。