例如,我在Elasticsearch中存储用户护照。它们存储为以下格式的连续字母和数字:AADDDDDDD
。 2个字母,然后是7个数字。
用户对搜索感兴趣,他可以在此处提及特定位置的特定值。例如,我想搜索所有在开头有'A',在第三个位置有'7'而在最后一个位置有'0'的护照号码。像这样:
A-7----0
如何为此生成有效的查询?我需要为此创建任何自定义分析器吗?
到目前为止,我所做的是在字符之间插入空格然后搜索索引位置,对我来说似乎是一项代价高昂的操作。
答案 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过滤器,并有效地使用过滤器缓存