Elasticsearch:是否可以索引源中不存在的字段?

时间:2014-09-25 08:29:12

标签: elasticsearch

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

这种可能性似乎没有太大的提升,因为映射可以导致源中的字段以几种不同的方式编制索引,例如Geo Point类型可以索引pos.lonpos.lat和{ {1}}即使这些不在原始源文档中。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

然后我只包括上传者'像往常一样索引源文档。我可以通过它进行搜索,但不会在任何结果中返回。

我的相关问题:How to create elasticsearch index alias that excludes specific fields - 不完全相同:)