lucene ElasticSearch字段名称别名

7gs2gvoe  于 2022-11-07  发布在  Lucene
关注(0)|答案(4)|浏览(252)

是否可以在elasticsearch中为字段名设置别名?(就像索引名可以设置别名一样)
例如:我有一个文档{'firstname':“约翰”,"姓“:“铁匠”}
我想把“firstname”改成“fn "

pzfprimi

pzfprimi1#

只是一个快速的更新,Elasticsearch 6.4提出了一个名为**Alias Datatype**的功能。检查下面的Map和查询作为示例。
请注意,在以下fieldname fn的Map中,字段的类型为alias

样本Map:

PUT myindex
{
  "mappings": {
    "_doc": {
      "properties": {
        "firstname": {
          "type": "text"
        },
        "fn": {
          "type": "alias",
          "path": "firstname" 
        }
      }
    }
  }
}

示例查询:

GET myindex/_search
{
  "query": {
    "match" : {
      "fn" : "Steve"
    }
  }
}

我们的想法是将alias用于创建倒排索引的实际字段。请注意,具有别名数据类型的字段不用于write操作,它仅用于查询目的。
虽然你可以参考我提到的链接了解更多细节,但以下只是一些要点。

  • 字段别名只能在索引具有single mapping时使用。索引必须在6.xx之后的版本中创建,或者在设置为index.mapping.single_type: true的旧版本中创建
  • 可用于queryingaggregationssortinghighlightingsuggestion操作
  • 目标字段必须是创建倒排索引的实际字段
  • 无法创建另一个alias字段的alias
  • 无法在多个字段上使用alias。单一别名,单一字段。
    *不能用作使用_source的源筛选的一部分。
mu0hgdu0

mu0hgdu02#

没有直接的字段别名功能。但是,您可以在使用Map中的index_name属性建立索引时重命名字段。
索引名称:将存储在索引中的字段的名称。默认为属性/字段名称。
有关详细信息,请参阅此处:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-core-types.html

ggazkfy8

ggazkfy83#

正在为现有字段firstname添加别名fn

PUT myindex/_mapping
{
  "properties": {
    "fn": {
      "type": "alias",
      "path": "firstname" 
    }
  }
}

从Elasticsearch 7开始应该这样工作。

ilmyapht

ilmyapht4#

也许你可以尝试在你的索引上创建一个别名,并在所需的字段上使用过滤器。你的过滤器必须以这样的方式编写,它可以从你的字段中选择所有的条目。请参考here中的过滤别名部分。但是我很想知道你的用例。为什么你要在特定的字段上创建别名。

相关问题