Elasticsearch 中的位数组使用和过滤
Bit arrays usage and filtering in Elasticsearch
我有一个位数组。我想根据某些位是开还是关进行过滤。
查看 Elasticsearch 2.3 文档,我没有看到任何关于位数组的信息。
但我似乎可以使用布尔数组或二进制字段。
示例:
假设我有 2 个文档,每个文档都有一个位数组字段。 Doc1 在该字段中有 011100,Doc2 有 00001。我想按 011000 过滤,在这种情况下只提供 Doc1。
知道如何在 Elasticsearch 中执行此操作吗?
谢谢。
编辑:另一个想法:
如果我将位数组转换为许多 Bool 字段,那么它就可以工作。该文档可能看起来很丑陋,但它确实有效。
基本上如果位数组是 32 位,那么我将有 32 个 bool 字段。这是实现它的最佳方式吗?
如果您可以将其更改为包含已设置的位索引的数组。即 011100
将是 [ 1 , 2 ,3 ]
,然后使用 terms
查询为 and
[=17= 执行 or
或 must
查询]
示例:
a) document with "111"
put test/test/1
{
"bit_position" : [
1,
2,
3
]
}
b) document with 010
put test/test/2
{
"bit_position": [
2
]
}
c) or-ing with 101
post test/_search
{
"query": {
"terms": {
"bit_position": [
1,
3
]
}
}
}
我有一个位数组。我想根据某些位是开还是关进行过滤。 查看 Elasticsearch 2.3 文档,我没有看到任何关于位数组的信息。
但我似乎可以使用布尔数组或二进制字段。
示例: 假设我有 2 个文档,每个文档都有一个位数组字段。 Doc1 在该字段中有 011100,Doc2 有 00001。我想按 011000 过滤,在这种情况下只提供 Doc1。
知道如何在 Elasticsearch 中执行此操作吗?
谢谢。
编辑:另一个想法:
如果我将位数组转换为许多 Bool 字段,那么它就可以工作。该文档可能看起来很丑陋,但它确实有效。 基本上如果位数组是 32 位,那么我将有 32 个 bool 字段。这是实现它的最佳方式吗?
如果您可以将其更改为包含已设置的位索引的数组。即 011100
将是 [ 1 , 2 ,3 ]
,然后使用 terms
查询为 and
[=17= 执行 or
或 must
查询]
示例:
a) document with "111"
put test/test/1
{
"bit_position" : [
1,
2,
3
]
}
b) document with 010
put test/test/2
{
"bit_position": [
2
]
}
c) or-ing with 101
post test/_search
{
"query": {
"terms": {
"bit_position": [
1,
3
]
}
}
}