Elasticsearch中的字段和属性有什么区别?

Foo*_*bar 2 elasticsearch

我目前正在尝试了解字段(https://www.elastic.co/guide/zh/elasticsearch/reference/current/multi-fields.html)和属性(https://www.elastic.co /guide/zh-CN/elasticsearch/reference/current/properties.html)。

它们都以某种方式定义为类型/映射属性的“子字段/子属性”,都可以具有单独的类型和分析器(据我所知),都可以通过点符号(mappingProperty.subFieldmappingProperty.property)访问。

这些文档随机使用术语“字段”和“属性”,我有这样的感觉,例如:

类型映射,对象字段和嵌套字段包含称为属性的子字段。

属性和(子)字段之间有什么区别?如何确定我是否有财产或田地?

换句话说,如何决定我是否使用

{
  "mappings": {
    "_doc": { 
      "properties": {
        "myProperty": { 
          "properties": {

          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

要么

{
  "mappings": {
    "_doc": { 
      "properties": {
        "myProperty": { 
          "fields": {

          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Pie*_*let 5

子字段是从父属性源中索引的。而子属性需要在文档源中具有“真实”值。

如果源中包含真实对象,则需要创建属性。每个属性将对应一个与您的来源不同的值。

如果只想索引相同的值但使用不同的分析器,则使用子字段。

为不同的目的以不同的方式对同一字段建立索引通常很有用。这是多字段的目的。例如,可以将字符串字段映射为用于全文搜索的文本字段,并映射为用于排序或聚合的关键字字段:

(对不起,我很难解释= |)

  • 另一种说法是,字段用于在属性上创建索引。他们告诉 Elastic 您想要为该属性创建不同类型的索引。例如,您可能有一个属性,例如“速度”,索引为文本类型,但您希望它也具有关键字或 int 或两者的索引类型 - 这是您创建字段的位置。这些索引在您搜索时很有用。 (2认同)