我有一点阵。我想根据某些位是ON还是OFF进行过滤。查看Elasticsearch 2.3文档,我没有看到有关位数组的任何信息。
但似乎我可以使用布尔数组或二进制字段。
示例:假设我有2个文档,每个文档都有一个位数组字段。Doc1在该字段中具有011100,而Doc2具有00001。我想按011000进行过滤,在这种情况下,它仅给出Doc1。
任何想法如何在Elasticsearch中做到这一点?
谢谢。
编辑:另一个想法:
如果我将位数组转换为许多布尔字段,那么它将起作用。该文档可能看起来很难看,但是可以工作。基本上,如果位数组是32位,那么我将拥有32个布尔字段。那是实现此目标的最佳方法吗?
如果可以将其更改为包含已设置的位索引的数组。也就是说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
]
}
}
}
问题内容: 我是ES中的新手,我想使用脚本过滤器来获得所有匹配,即数组至少具有一个小于max且大于min的元素(max和min是脚本中的param)。 该文件像: 我尝试了脚本,但没有用 没有错误信息,但是搜索结果是错误的,有没有办法迭代数组字段? 谢谢你们。 问题答案: 是的,这是可行的,但是您的脚本没有这样做。尝试改用Groovy的any()方法: 一些东西: 您的脚本只是遍历一个集合并检查条
问题内容: 我有一个包含整数数组的字段,例如: 我想过滤结果,以使价格至少包含介于以下之间的值列表之一: 由于价格字段中的`[20002,30000] 问题答案: Elasticsearch始终认为字段可以包含值列表,因此,范围过滤器应该起作用。如果任何值与范围匹配,它将被过滤。 您可以将该过滤器用作过滤查询的一部分: 但是,过滤查询在2.0中已弃用,因此,如果您使用的是2.0,则最好将布尔查询与
问题内容: 我的Elasticsearch DB中有一个像这样的文档: 我希望能够使用此条件过滤我的文档:Documents标签数组必须具有标签1,标签3和标签2,但不能具有标签A。 我尝试使用布尔过滤器,但无法使其正常工作! 问题答案: 这是一种似乎可以完成您想要的方法:http : //sense.qbox.io/gist/4dd806936f12a9668d61ce63f39cb2c2845
问题内容: TL; DR -我该如何检查是否 之一的 和 所有的 嵌套数组满足规定的标准是什么? 我有一个。每个对象都有一个嵌套对象数组,这些对象本身都有一个嵌套对象列表。我需要对所有文档中 至少一个嵌套对象匹配的文档执行过滤器。当我说的比赛,我的意思是 所有 的嵌套对象的对象以某种方式相匹配。这是一个示例映射,以供参考; 如果文档没有/ 对象,则认为是匹配的。但是,更糟糕的是,内部对象需要考虑以
问题内容: 我该如何过滤具有一个数组的字段并且具有超过N个元素的文档? 如何过滤具有为空数组的字段的文档? 是解决方案吗?如果是这样,怎么办? 问题答案: 我来看看脚本过滤器。以下过滤器应仅返回在字段中具有至少10个元素的文档,该文档是一个数组。请记住,这可能很昂贵,具体取决于索引中有多少个文档。 关于第二个问题:那里真的有一个空数组吗?还是仅仅是一个没有值的数组字段?您可以使用缺少的过滤器来获取
问题内容: 假设我们在ElasticSearch索引中有一堆文档。每个文档 在一个数组中 都有多个位置,如下所示: 根据ElasticSearch参考指南 该过滤器可以针对每个文档使用多个位置/点。一旦单个位置/点与过滤器匹配,则文档将包含在过滤器中。 因此,是否可以创建检查数组中所有位置的地理距离过滤器? 不幸的是,这似乎不起作用: 抛出“ ”,因为它不是单个值,而是s 的数组。 问题答案: 您