定义字段映射

编辑

您必须在 _meta/fields.yml 中定义 Beat 使用的字段及其映射详细信息。编辑此文件后,运行 make update

fields 数组中定义字段映射

- key: mybeat
  title: mybeat
  description: These are the fields used by mybeat.
  fields:
    - name: last_name 
      type: keyword 
      required: true 
      description: > 
        The last name.
    - name: first_name
      type: keyword
      required: true
      description: >
        The first name.
    - name: comment
      type: text
      required: false
      description: >
        Comment made by the user.

name:字段名称

type:字段类型。type 的值可以是任何 Elasticsearch 中可用的数据类型。如果未指定值,则默认类型为 keyword

required:字段值是否必填

description:有关字段内容的一些信息

映射参数

编辑

您可以为每个字段指定其他映射参数。有关每个参数的更多详细信息,请参阅 Elasticsearch 参考

format

指定字段使用的自定义日期格式。

multi_fields

对于 textkeyword 字段,使用 multi_fields 定义多字段映射。

enabled

字段是否启用。

analyzer

索引时使用的分析器。

search_analyzer

搜索时使用的分析器。

norms

适用于 textkeyword 字段。默认为 false

dynamic

动态字段控制。可以是 true(默认)、falsestrict 之一。

index

字段是否应被索引。

doc_values

字段是否应生成 doc 值。

copy_to

将字段值复制到的字段。

ignore_above

Elasticsearch 忽略(不索引)长度超过指定值的字符串。当此属性值缺失或为 0 时,将使用 libbeat 的默认值 1024 个字符。如果值为 -1,则使用 Elasticsearch 的默认值。

例如,您可以使用 copy_to 映射参数在索引时将 last_namefirst_name 字段复制到 full_name 字段

- key: mybeat
  title: mybeat
  description: These are the fields used by mybeat.
  fields:
    - name: last_name
      type: text
      required: true
      copy_to: full_name 
      description: >
        The last name.
    - name: first_name
      type: text
      required: true
      copy_to: full_name 
      description: >
        The first name.
    - name: full_name
      type: text
      required: false
      description: >
        The last_name and first_name combined into one field for easy searchability.

last_name 的值复制到 full_name

first_name 的值复制到 full_name

还有一些 Kibana 特定的属性,此处未详细说明。这些是:analyzedcountsearchableaggregatablescript。Kibana 参数也可以使用 patterninput_formatoutput_formatoutput_precisionlabel_templateurl_templateopen_link_in_current_tab 来描述。

定义文本多字段

编辑

使用文本字段时,您可以应用各种选项。您可以使用默认分析器定义简单的文本字段,无需任何其他选项,如前面示例所示。

例如,为了在聚合或排序中使用,在使用 text 映射时保留原始关键字值,您可以使用多字段映射

- key: mybeat
  title: mybeat
  description: These are the fields used by mybeat.
  fields:
    - name: city
      type: text
      multi_fields: 
        - name: keyword 
          type: keyword 

multi_fields:定义 multi_fields 映射参数。

name:这是多字段的常规名称。它可以是任何名称(raw 是另一个常用选项),但约定是使用 keyword

type:指定 keyword 类型以在聚合中使用字段或对文档进行排序。

有关更多信息,请参阅 有关多字段的 Elasticsearch 文档

内联定义文本分析器

编辑

可以在字段映射参数中内联定义新的文本分析器或搜索分析器。

例如,您可以定义一个新的文本分析器,该分析器不会中断带连字符的名称

- key: mybeat
  title: mybeat
  description: These are the fields used by mybeat.
  fields:
    - name: last_name
      type: text
      required: true
      description: >
        The last name.
      analyzer:
        mybeat_hyphenated_name: 
          type: pattern 
          pattern: "[\\W&&[^-]]+" 
      search_analyzer:
        mybeat_hyphenated_name: 
          type: pattern
          pattern: "[\\W&&[^-]]+"

使用新定义的文本分析器

定义自定义分析器类型

指定分析器行为

对搜索使用相同的分析器

内联定义的自定义分析器的名称不能重复用于不同的文本分析器。如果重复使用文本分析器名称,则会检查其与现有分析器实例是否匹配。建议分析器名称以 Beat 名称作为前缀,以避免名称冲突。

有关更多信息,请参阅 有关定义自定义文本分析器的 Elasticsearch 文档