Arrays 弹性搜索中的数组匹配
我一直在尝试重新编写一些声学ID代码,我试图找出ElasticSearch是否有一种模糊匹配int数组的方法。具体来说,假设我有我的搜索数组:Arrays 弹性搜索中的数组匹配,arrays,postgresql,
elasticsearch,Arrays,Postgresql,
elasticsearch,我一直在尝试重新编写一些声学ID代码,我试图找出ElasticSearch是否有一种模糊匹配int数组的方法。具体来说,假设我有我的搜索数组:{1,2,3},在ES中,我存储我的参考文档: 1: {3,4,5,6} 2: {1,1,1,2,4,3,4} 3: {6,7,8} 4: {1,1,2,3} 我希望得到4作为最佳匹配(它正好包含1,2,3),然后是2(它包含我的搜索,但其中有一个额外的int),然后是1(它有一个3),但不是3 当前的声学ID代码在postgres中使用一些定制的C代码
{1,2,3}
,在ES中,我存储我的参考文档:
1: {3,4,5,6}
2: {1,1,1,2,4,3,4}
3: {6,7,8}
4: {1,1,2,3}
我希望得到4作为最佳匹配(它正好包含1,2,3),然后是2(它包含我的搜索,但其中有一个额外的int),然后是1(它有一个3),但不是3
当前的声学ID代码在postgres中使用一些定制的C代码实现了这一点——如果它对上下文有用,可以在这里找到
实际上,我打算对这些数组中的~100GB进行索引,每个数组包含~100个整数。ES能否处理此类工作,并提供合理的性能水平 您是否尝试过向我们介绍Elasticsearch。此查询将返回所需的文档
但是,在整数数组上使用它将提供不同的排序,因为fieldnorm不会与整数字段一起存储。
要获得所需的排序,只需将整数数组存储为字符串数组并使用以下术语查询即可:
"query": {
"terms": {
"ids": [
"1",
"2",
"3"
]
}
}