标记计数字段类型编辑

token_count 类型的字段实际上是一个 integer 字段,它接受字符串值,对其进行分析,然后索引字符串中的标记数量。

例如

response = client.indices.create(
  index: 'my-index-000001',
  body: {
    mappings: {
      properties: {
        name: {
          type: 'text',
          fields: {
            length: {
              type: 'token_count',
              analyzer: 'standard'
            }
          }
        }
      }
    }
  }
)
puts response

response = client.index(
  index: 'my-index-000001',
  id: 1,
  body: {
    name: 'John Smith'
  }
)
puts response

response = client.index(
  index: 'my-index-000001',
  id: 2,
  body: {
    name: 'Rachel Alice Williams'
  }
)
puts response

response = client.search(
  index: 'my-index-000001',
  body: {
    query: {
      term: {
        'name.length' => 3
      }
    }
  }
)
puts response
PUT my-index-000001
{
  "mappings": {
    "properties": {
      "name": { 
        "type": "text",
        "fields": {
          "length": { 
            "type":     "token_count",
            "analyzer": "standard"
          }
        }
      }
    }
  }
}

PUT my-index-000001/_doc/1
{ "name": "John Smith" }

PUT my-index-000001/_doc/2
{ "name": "Rachel Alice Williams" }

GET my-index-000001/_search
{
  "query": {
    "term": {
      "name.length": 3 
    }
  }
}

name 字段是一个 text 字段,它使用默认的 standard 分析器。

name.length 字段是一个 token_count 多字段,它将索引 name 字段中的标记数量。

此查询仅匹配包含 Rachel Alice Williams 的文档,因为它包含三个标记。

token_count 字段的参数编辑

token_count 字段接受以下参数

analyzer

应该用于分析字符串值的 分析器。 必填。 为了获得最佳性能,请使用不带标记过滤器的分析器。

enable_position_increments

指示是否应计算位置增量。 如果您不想计算被分析器过滤器(如 stop)删除的标记,请设置为 false。 默认为 true

doc_values

该字段是否应该以列跨度的方式存储在磁盘上,以便以后可以用于排序、聚合或脚本? 接受 true(默认)或 false

index

该字段是否应该可搜索? 接受 true(默认)和 false

null_value

接受与字段相同 type 的数值,该数值将替换任何显式的 null 值。 默认为 null,这意味着该字段被视为缺失。

store

字段值是否应该存储并可以与 _source 字段分开检索。 接受 truefalse(默认)。