【问题标题】:Elasticsearch: Is it possible to index fields not present in source?Elasticsearch:是否可以索引源中不存在的字段?
【发布时间】:2014-10-15 02:51:40
【问题描述】:

是否可以制作源文档中不存在的 Elasticsearch 索引字段?我想要做的一个例子是索引Geo Point,但不存储值并将其排除在_source 字段之外。然后我可以根据位置、geohash 等进行搜索和聚合,但不返回结果文档本身中的位置,例如,出于隐私原因。

这种可能性似乎并不太牵强,因为映射可能导致源中的字段以几种不同的方式被索引,例如 Geo Point 类型可以索引 pos.lonpos.latpos.geohash,即使这些不在原始源文档中。

我看过source filtering,但这似乎只适用于搜索而不是索引。我没有找到在别名中使用它的方法。

我发现完成这样的事情的唯一方法是不存储_source,而是存储所有其他字段,除了我想隐藏的单个字段。不过,这似乎过于笨拙。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    我认为您可以使用映射来做到这一点:

    在我的索引创建代码中,我有以下内容:

            "mappings" : {
                "item" : {
                    "_source" : {"excludes" : ["uploader"]},
                    "properties" : { ... }
                }
            },
            "settings" : { ... }
    

    ('item' 是我的索引的文档类型。在这种情况下,'uploader' 是一个电子邮件地址 - 我们想要搜索的东西,但不想泄露给用户。)

    然后我在索引源文档时像往常一样包含“上传者”。我可以按它搜索,但它没有在任何结果中返回。

    我的相关问题:How to create elasticsearch index alias that excludes specific fields - 不太一样:)

    【讨论】:

      猜你喜欢
      • 2021-12-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 2017-03-14
      • 2015-09-16
      • 1970-01-01
      相关资源
      最近更新 更多