是否可以生成源文档中不存在的Elasticsearch索引字段?我想要做的一个例子是索引Geo Point,但不存储该值并将其从_source
字段中删除。然后我可以根据位置,geohash等进行搜索和聚合,但不会在结果文档中返回位置,例如出于隐私原因。
这种可能性似乎没有太大的提升,因为映射可以导致源中的字段以几种不同的方式编制索引,例如Geo Point类型可以索引pos.lon
,pos.lat
和{ {1}}即使这些不在原始源文档中。
我查看了source filtering,但这似乎只适用于搜索而不是索引。我没有找到在别名中使用它的方法。
我发现完成这样的事情的唯一方法是不存储pos.geohash
,但存储所有其他字段,除了我要隐藏的单个字段。但这似乎过于笨拙。
答案 0 :(得分:0)
我认为你可以用映射来做到这一点:
在我的索引创建代码中,我有以下内容:
"mappings" : {
"item" : {
"_source" : {"excludes" : ["uploader"]},
"properties" : { ... }
}
},
"settings" : { ... }
(' item'是我的索引的文档类型。'上传者在这种情况下是一个电子邮件地址 - 我们想要搜索的内容,但不想要泄漏给用户。)
然后我只包括上传者'像往常一样索引源文档。我可以通过它进行搜索,但不会在任何结果中返回。
我的相关问题:How to create elasticsearch index alias that excludes specific fields - 不完全相同:)