当前位置: 首页 > 知识库问答 >
问题:

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

呼延晋
2023-03-14

我目前正试图理解字段之间的差异(https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html)和属性(https://www.elastic.co/guide/en/elasticsearch/reference/current/properties.html).

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

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

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

属性和(子)字段之间有什么区别?我如何决定我是拥有一个属性还是一个字段?

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

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

          }
        }
      }
    }
  }
}

或者

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

          }
        }
      }
    }
  }
}

共有2个答案

楚茂实
2023-03-14

注:这是我目前理解的解释。它可能不是100%准确。

属性是我们在RDBMS(类似MySQL的标准关系数据库)中用来调用的字段。它存储对象的属性,并为索引提供高级结构(我们可以将其与关系数据库中的表进行比较)。

链接(或包含)到属性概念中的字段是使用特定分析器索引该属性的一种方式。

假设你有:

  • 一个分析器(A)大写

分析器所做的是将输入(属性上的文本)转换为一系列将被索引的标记。当您进行搜索时,将使用相同的分析器,以便将文本转换为这些标记,它会给每个标记打分,然后使用这些标记从索引中获取文档。

(A) Dog = DOG
(B) Dog = dog
(C) Dog = perro

要使用特定字段配置进行搜索,请使用点调用它:

  • 文本字段使用标准分析仪

因此,这些字段基本上允许您使用不同的令牌生成模型执行搜索。

葛鸿轩
2023-03-14

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

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

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

为了不同的目的,以不同的方式索引同一个字段通常是有用的。这就是多领域的目的。例如,字符串字段可以映射为全文搜索的文本字段,以及排序或聚合的关键字字段:

(对不起,我觉得很难解释)

 类似资料:
  • 我一直在阅读这两个关于属性和字段的文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html https://www.elastic.co/guide/en/elasticsearch/reference/current/properties.html 我理解具体文档中描述的每个属性的用

  • 问题内容: 对于“属性”和“属性”之间的区别,我通常感到困惑,并且找不到很好的资源来简洁地详细说明这些区别。 问题答案: 属性是一种特殊的属性。基本上,当Python遇到以下代码时: 它查找中,然后检查,看它是否有一个,或方法- 如果这样做,这是一个性质。如果它 是 一个属性,则不仅会返回该对象(就像对其他任何属性一样),还会调用该方法(因为我们一直在进行查找),并返回该方法返回的内容。 有关Py

  • 问题内容: 从一些初始教程中,我看到属性属于类,并且本质上是C ++世界中使用的“全局变量”(在几年前进行了编码)。我也将变量视为更多的“本地”实体,仅在方法中使用/存储信息。 然后我遇到了这个Quora线程:https : //www.quora.com/Apple-Swift-programming-language/What-is-the-difference- between-a-prop

  • 问题内容: 可以在这里找到代码: 我发现有内标记,也有内标签。它们都是必需的吗?(在这种情况下,CSS似乎覆盖了HTML属性)关于它们之间的区别是否有任何解释? 问题答案: 我检查了文档,但是它们并不清楚如果同时设置了它们。 那藏在这里的某个地方: UA可以选择使用HTML源文档中的表示属性。如果是这样,则将这些属性转换为对应的CSS规则,其特异性等于0,并且将其视为在作者样式表的开头插入。因此,

  • 问题内容: 之间是否存在有意义的区别: 与 如果要创建很多实例,这两种样式在性能或空间要求上是否有任何区别?阅读代码时,您是否认为两种样式的含义有明显不同? 问题答案: 除了性能方面的考虑外,还有明显的语义差异。在类属性的情况下,仅引用一个对象。在实例属性设置实例中,可以有多个引用对象。例如

  • 问题内容: 在jQuery 1.6.1中进行更改之后,我一直在尝试定义HTML中属性和属性之间的差异。 查看jQuery1.6.1发行说明中的列表(在底部附近),似乎可以对HTML属性和属性进行如下分类: 属性:所有具有布尔值或UA计算得出的值,例如selectedIndex。 属性:可以添加到既不是布尔也不包含UA生成值的HTML元素中的“属性”。 有什么想法吗? 问题答案: 在编写HTML源代