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= 执行 ormust 查询]

示例:

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
           ]
        }
    }
}