Elasticsearch系列---Term Vector工具探查数据

本文介绍了Elasticsearch的Term Vector概念,包括其作用、类型、信息组成以及使用案例。Term Vector是一个数据探查工具,用于分析document的field分词详情,帮助排查排序和搜索问题。它记录了term的df值、ttf值、位置和偏移量等信息,可在建立索引时或查询时生成。
摘要由CSDN通过智能技术生成

概要

本篇主要介绍一个Term Vector的概念和基本使用方法。

term vector是什么?

每次有document数据插入时,elasticsearch除了对document进行正排、倒排索引的存储之外,如果此索引的field设置了term_vector参数,elasticsearch还会对这个的分词信息进行计算、统计,比如这个document有多少个field,每个field的值分词处理后得到的term的df值,ttf值是多少,每个term存储的位置偏移量等信息,这些统计信息统称为term vector。
term vector的值有5个

  • no:不存储term vector信息,默认值
  • yes:只存储field terms信息,不包含position和offset信息
  • with_positions:存储term信息和position信息
  • with_offsets:存储term信息和offset信息
  • with_positions_offsets:存储完整的term vector信息,包括field terms、position、offset信息。

term vector的信息生成有两种方式:index-time和query-time。index-time即建立索引时生成term vector信息,query-time是在查询过程中实时生成term vector信息,前者以空间换时间,后者以时间换空间。

term vector有什么作用?

term vector本质上是一个数据探查的工具(可以看成是一个debugger工具),上面记录着一个document内的field分词后的term的详细情况,如拆分成几个term,每个term在正排索引的哪个位置,各自的df值、ttf值分别是多少等等。一般用于数据疑似问题的排查,比如说排序和搜索与预期的结果不一致,需要了解根本原因,可以拿这个工具手动进行数据分析,帮助判断问题的根源。

读懂term vector信息

我们来看看一个完整的term vector报文,都有哪些信息,带#号的一行代码是添加的注释,如下示例:

{
   
  "_index": "music",
  "_type": "children",
  "_id": "1",
  "_version": 1,
  "found": true,
  "took": 0,
  "term_vectors": {
   
    "text": {
   
      "field_statistics": {
   
        "sum_doc_freq": 3,
        "doc_count": 1,
        "sum_ttf": 3
      },
      "terms": {
   
        "elasticsearch": {
   
          "doc_freq": 1,
          "ttf": 1,
          "term_freq": 1,
          "tokens": [
            {
   
              "position": 2,
              "start_offset": 11,
              "end_offset": 24
            }
         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值