Elasticsearch中的位数组使用和过滤

时间:2016-08-23 21:28:03

标签: elasticsearch bitarray

我有点阵。我想根据某些位是ON还是OFF进行过滤。 看看Elasticsearch 2.3文档,我没有看到任何关于bitarrays的内容。

但似乎我可以使用布尔数组或二进制字段。

实施例: 假设我有2个文档,每个文档都有一个位数组字段。 Doc1有011100,Doc2在该字段中有00001。我想过滤011000,在这种情况下只提供Doc1。

如何在Elasticsearch中做到这一点?

谢谢你。

编辑:另一个想法:

如果我将位数组转换为许多Bool字段,那么它可以工作。该文档可能看起来很丑,但它确实有效。 基本上如果位数组是32位,那么我将有32个bool字段。这是实现这个的最佳方式吗?

1 个答案:

答案 0 :(得分:1)

如果可以将其更改为包含已设置的位索引的数组。这是011100 [ 1 , 2 ,3 ],然后使用terms查询对or进行mustand查询

示例:

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