如何在Elasticsearch中执行蒙面查询?

时间:2016-05-28 14:18:18

标签: elasticsearch masking

例如,我在Elasticsearch中存储用户护照。它们存储为以下格式的连续字母和数字:AADDDDDDD。 2个字母,然后是7个数字。

用户对搜索感兴趣,他可以在此处提及特定位置的特定值。例如,我想搜索所有在开头有'A',在第三个位置有'7'而在最后一个位置有'0'的护照号码。像这样:

A-7----0

如何为此生成有效的查询?我需要为此创建任何自定义分析器吗?

到目前为止,我所做的是在字符之间插入空格然后搜索索引位置,对我来说似乎是一项代价高昂的操作。

1 个答案:

答案 0 :(得分:1)

您需要多少效率查询?如果您的数据不是很大,可以尝试使用regexp查询https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html

其他建议将使用带有符号数组及其位置的文档。离。

   {
        'code' : [
           {'pos':1, 'symbol':A},{'pos':2, 'symbol':B}, ...
        ]
    } 

然后你可以使用bool过滤器,并有效地使用过滤器缓存