当前位置: 首页 > article >正文

【Elasticsearch】词项中心(term-centric)和字段中心(field-centric)

在 Elasticsearch 的`multi_match`查询中,词项中心(term-centric)和字段中心(field-centric)是两种不同的查询处理方式,它们决定了查询词项如何在多个字段中进行匹配。这两种方式分别对应不同的`multi_match`查询类型,主要区别在于它们如何处理查询词项和字段之间的关系。

---

1.字段中心(Field-Centric)

字段中心的查询方式主要关注单个字段内的匹配,而不是跨字段的组合匹配。这种方式适用于每个字段独立处理查询词项的场景。

特点

• 查询词项会在每个字段中独立匹配。

• 每个字段的匹配结果会独立计算分数(`_score`),然后通过某种方式(如`dis_max`或`bool`查询)组合起来。

• 适用于字段内容差异较大,或者字段具有不同分析器的场景。

适用的`multi_match`类型

• `best_fields`:默认类型,适用于查询词项在单个字段中最佳匹配的场景。

• 查询词项会在每个字段中独立匹配,最终选择分数最高的字段作为匹配结果。

• 示例:

```json

    {

      "query": {

        "multi_match": {

          "query": "quick brown fox",

          "type": "best_fields",

          "fields": ["title", "description"]

        }

      }

    }

    ```

• 如果`quick brown fox`在`title`字段中匹配得更好,那么`title`字段的分数会被选中。

• `most_fields`:适用于查询词项在多个字段中分别匹配的场景。

• 查询词项会在每个字段中独立匹配,然后将所有字段的分数相加。

• 示例:

```json

    {

      "query": {

        "multi_match": {

          "query": "quick brown fox",

          "type": "most_fields",

          "fields": ["title", "description"]

        }

      }

    }

    ```

• 如果`quick brown fox`在`title`和`description`中都有匹配,两个字段的分数会被累加。

优点

• 灵活性高:每个字段独立处理,适合字段内容差异较大的场景。

• 性能较好:字段独立处理,查询逻辑简单。

缺点

• 无法跨字段组合匹配:无法处理查询词项分布在多个字段中的情况。

• 字段权重问题:不同字段的匹配结果可能会因为字段内容的差异而难以比较。

---

2.词项中心(Term-Centric)

词项中心的查询方式关注的是查询词项在多个字段中的组合匹配。这种方式将多个字段视为一个整体,允许查询词项分布在不同的字段中。

特点

• 查询词项会被分析为单个词项,然后在多个字段中查找每个词项。

• 所有字段被视为一个整体,查询词项可以在任意字段中匹配。

• 适用于查询词项分布在多个字段中的场景。

适用的`multi_match`类型

• `cross_fields`:典型的词项中心查询方式。

• 查询词项会被分析为单个词项,然后在多个字段中查找每个词项。

• 示例:

```json

    {

      "query": {

        "multi_match": {

          "query": "Will Smith",

          "type": "cross_fields",

          "fields": ["first_name", "last_name"]

        }

      }

    }

    ```

• `Will`可以出现在`first_name`中,`Smith`可以出现在`last_name`中。

• 查询逻辑:

```

      +(first_name:will last_name:will)

      +(first_name:smith last_name:smith)

      ```

优点

• 跨字段组合匹配:允许查询词项分布在多个字段中,适合结构化数据的查询。

• 灵活的匹配逻辑:可以通过`operator`和`minimum_should_match`等参数灵活控制匹配逻辑。

缺点

• 字段分析器一致性要求:所有字段必须使用相同的分析器,否则可能会导致字段被分组。

• 性能问题:查询逻辑复杂,可能会对性能有一定影响。

---

总结

• 字段中心(Field-Centric):

• 适用场景:字段内容差异较大,或者字段具有不同分析器。

• 优点:灵活性高,性能较好。

• 缺点:无法跨字段组合匹配。

• 典型类型:`best_fields`、`most_fields`。

• 词项中心(Term-Centric):

• 适用场景:查询词项分布在多个字段中,需要跨字段组合匹配。

• 优点:支持跨字段匹配,灵活的匹配逻辑。

• 缺点:字段分析器必须一致,查询逻辑复杂。

• 典型类型:`cross_fields`。

在实际使用中,根据你的具体需求选择合适的查询类型和处理方式,可以实现更高效的查询效果。


http://www.kler.cn/a/551403.html

相关文章:

  • Pytorch使用手册-使用 PyTorch 和 TIAToolbox 进行全视野切片图像分类(专题十七)
  • 基于 Python 和 MySQL 的房屋信息可视化及价格预测系统设计与实现(源码+lw)
  • 一文读懂Ingress-Nginx以及实战教程
  • SSL 连接
  • webpack和vite打包原理及比较
  • Python爬虫实战:获取笔趣阁图书信息,并做数据分析
  • C语言学习笔记 (初阶)
  • 信息收集-Web应用JS架构URL提取数据匹配Fuzz接口WebPack分析自动化
  • Vue.js 组件开发:构建可复用的 UI 组件
  • Spring如何去解决循环依赖问题的?
  • 游戏数据中枢系统的架构设计与实现——以GameDataOrchestrator为核心的模块化数据管理体系
  • 基于IOCP模型的服务器接待流程设计与实现——以奶茶店运营为隐喻
  • 浅谈Spring Boot MQTT功能并实现手动连接操作
  • 500. 键盘行 771. 宝石与石头 简单 find接口的使用
  • 机械学习基础-6.更多分类-数据建模与机械智能课程自留
  • 基于kafka、celery的日志收集报警项目
  • NCV4275CDT50RKG 车规级LDO线性电压调节器芯片——专为新能源汽车设计的高可靠性电源解决方案
  • 网络安全特性
  • 【CSS进阶】常见的页面自适应的方法
  • 2.17日学习总结