Elasticsearch:“术语”、“匹配短语”和“查询字符串”之间的区别

2023-12-08

Elasticsearch 新手,尝试更好地理解这些查询之间的差异。据我所知,term匹配单个术语(需要小写才能匹配?),并且两者match phrase and query string匹配一个文本字符串。


term查询按原样匹配单个术语:值为未分析。 因此,它不必根据您索引的内容而变为小写。

如果您提供Bennett在索引时并且未分析该值,以下查询将不会返回任何内容:

{
  "query": {
    "term" : { "user" : "bennett" }
  }
}

match_phrase如果为查询字段定义了分析器,则查询将分析输入并查找符合以下条件的文档:

  • 所有条款必须出现在字段中
  • 他们必须拥有相同的订单作为输入值
  • 不得有任何中间项,即连续的(可能排除停用词,但这可能很复杂)

例如,如果您索引以下文档(使用standard现场分析仪foo):

{ "foo":"I just said hello world" }

{ "foo":"Hello world" }

{ "foo":"World Hello" }

{ "foo":"Hello dear world" }

This match_phrase查询将仅返回第一个和第二个文档:

{
  "query": {
    "match_phrase": {
      "foo": "Hello World"
    }
  }
}

query_string查询搜索,默认情况下,在_all一次包含多个文本字段的文本的字段。最重要的是,它被解析并支持一些运算符(AND/OR...)、通配符等(请参阅相关语法).

As the match_phrase查询时,根据查询字段上设置的分析器对输入进行分析。

不像match_phrase,分析后获得的术语不必采用相同的顺序,除非用户在输入周围使用了引号。

例如,使用与之前相同的文档,此查询将返回所有文档:

{
  "query": {
    "query_string": {
      "query": "hello World"
    }
  }
}

但是这个查询将返回与以下相同的 2 个文档match_phrase query :

{
  "query": {
    "query_string": {
      "query": "\"Hello World\""
    }
  }
}

关于这些查询的不同选项还有很多要说的,请查看相关文档:

  • term
  • 匹配短语
  • 请求参数

希望这足够清楚并且会有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elasticsearch:“术语”、“匹配短语”和“查询字符串”之间的区别 的相关文章

随机推荐

  • Struts2,无法使用 标记访问参数。想要在 标签中使用它

    我有一种情况需要将导航栏放在每个页面的顶部 因此 我决定在每个页面中包含一个新的 JSP 其中包含一个参数 指示用户所在的活动选项卡是什么 我的实现如下 仪表板 jsp
  • 如何将大型 gem 转换为独立的 Rails 应用程序

    我正在构建一个社交网络 并一直在使用 gem Community engine 但在实现我的应用程序所需的大量自定义时遇到了困难 我认为这将使我更容易覆盖和添加方法 并帮助我更好地理解和学习代码 因为我将能够实际看到所有代码的实际运行 到目
  • 使用 php 按单词或文本过滤 csv 文件

    我有另一个 csv 文件 我正在尝试做一个简单的单词过滤器 例如 我的 text csv 文件如下所示 name age hobbies Tom 8 football soccer baseball wii star wars books
  • 使用hugo框架向网页添加图像

    我想将图像发布到我的博客上 是的 就这么简单 我的网站托管在 GitLab Pages 上 并使用 Hugo 框架 v0 23 我从这里分叉了我的网页 https gitlab com pages hugo 因此我的博客文件夹结构是相同的
  • ReferenceError:未定义 FullCalendar

    我现在一直在尝试使用文档中提供的示例来实现 fullcalendar 当我尝试运行它时 我收到此错误 ReferenceError 未定义 FullCalendar 我知道这条消息的含义 但我必须在哪里以及如何定义它 document ad
  • Rails 3 和 HTML 5 微数据

    在 Rails 中 是否可以使用任何 ActionView Helpers 创建 HTML 5 无值属性 我正在尝试为 google 创建 HTML 5 itemprop 微数据面包屑 这是我想要生成的输出 div div 但你可以看到项目
  • 如何从 VSPackage 获取当前运行的 Visual Studio 安装路径

    我创建了一个VSPackage这应该将一些 XML 架构文件复制到 Visual Studio 的安装路径 VS install path Xml Schemas 我的机器上安装了多个 Visual Studio Visual Studio
  • 将纯 Swift 自定义框架导入到其他 Swift 项目中

    让我们 我有一个定制的 SwiftCocoa Touch framework MyLog 它有一个简单的函数 称为printLog 我有另一个 Swift 项目 名为HelloWorld在不同的工作空间 位置 现在我需要导入自定义框架MyL
  • 通过 ICodecAPI 为 H.264 IMFSinkWriter 编码器设置属性

    我试图通过检索 ICodecAPI 接口来调整通过 ActivateObject 创建的 H 264 编码器的属性 虽然我没有收到错误 但我的设置没有被考虑在内 代码在 Windows 10 下运行 我复制用于创建 IMFSinkWrite
  • MYSQL 截断了不正确的 DOUBLE 值

    当执行下面的 SQL 查询时 UPDATE shop category SET name Secolul XVI XVIII AND name eng 16th to 18th centuries WHERE category id 476
  • Apache 无法确定 docker 容器上的服务器名称

    我正在尝试为现有站点设置自定义的 Docker 容器 为此 我想提供我自己的定制vhost配置与ServerName 但是当我尝试添加自定义vhost configuration并重新启动 apache 我收到警告 Apache 无法确定全
  • Android 设备 GPS 以编程方式打开/关闭

    我正在使用以下代码来打开 关闭 GPS Enable GPS Intent intent new Intent android location GPS ENABLED CHANGE intent putExtra enabled true
  • 你能改进 F# 中的“代码行算法”吗?

    我编写了一个小脚本来迭代文件夹中的文件以计算代码行数 该脚本的核心是这个函数 用于计算空白 注释和代码的行数 请注意 目前它是针对 C 定制的 不支持多行注释 它对我来说看起来不太好 有人有更干净的版本吗 from list of stri
  • UTC 和 GMT 有什么区别?

    我对时区有一些疑问 可以单独以 UTC 捕获时间吗 UTC 6 和 GMT 6 是否相同 这是否意味着它是美国当地时间 比如说 我的 UTC 时间为 02 01 2018 00 03 这是否意味着我的美国当地时间是 01 01 2018 1
  • 抽象类可以代替接口吗? [复制]

    这个问题在这里已经有答案了 在 Java 中 您可以创建仅包含抽象方法的抽象类 另一方面 您可以创建一个声明相同方法的接口 既然如此 能不能用抽象类来代替接口呢 不总是 一个类可以扩展only one class 一个类可以实现超过一个界面
  • 使用@View注解与在@Component注解中指定参数

    在 Angular io 文档中 它说 每个 Angular 组件都需要一个 Component 和至少一个 View 注释 LINK但即使是它的示例 也没有使用 View 注释 我的问题是 使用 View或在 Component注解中指定
  • 为什么 setnames() 会影响复制的表?

    我想创建 data table 的副本并更改新表中的列名称 当我更改 y V1 的名称时 x V1 的名称也会更改 为什么会这样 我该如何避免这种行为 Example x lt data table c 1 2 3 c 1 2 3 y lt
  • 无法打开 .accdb 文件,因为 Access 正在查找硬编码路径

    我收到了几个 accdb来自客户端的文件 我正在尝试打开它们Microsoft Access 2013 这些文件似乎可以正确打开 但每当我单击左侧的任何表或查询时 我都会收到以下错误消息 C hard coded path on clien
  • 请求 READ_SMS 权限后,包安装程序在 Android M 中崩溃

    我有一个尝试访问的登录片段 TelephonyManager getActivity getSystemService Context TELEPHONY SERVICE 这适用于 Lollipop 5 1 及以上版本的设备 当我在 Mar
  • Elasticsearch:“术语”、“匹配短语”和“查询字符串”之间的区别

    Elasticsearch 新手 尝试更好地理解这些查询之间的差异 据我所知 term匹配单个术语 需要小写才能匹配 并且两者match phrase and query string匹配一个文本字符串 term查询按原样匹配单个术语 值为