小编典典

Elasticsearch中的位数组用法和过滤

elasticsearch

我有一点阵。我想根据某些位是ON还是OFF进行过滤。查看Elasticsearch 2.3文档,我没有看到有关位数组的任何信息。

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

示例:假设我有2个文档,每个文档都有一个位数组字段。Doc1在该字段中具有011100,而Doc2具有00001。我想按011000进行过滤,在这种情况下,它仅给出Doc1。

任何想法如何在Elasticsearch中做到这一点?

谢谢。

编辑:另一个想法:

如果我将位数组转换为许多布尔字段,那么它将起作用。该文档可能看起来很难看,但是可以工作。基本上,如果位数组是32位,那么我将拥有32个布尔字段。那是实现此目标的最佳方法吗?


阅读 357

收藏
2020-06-22

共1个答案

小编典典

如果可以将其更改为包含已设置的位索引的数组。也就是说011100[ 1 , 2 ,3 ],然后用一个terms查询做一个or或一个must查询and

范例:

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
           ]
        }
    }
}
2020-06-22