如何在 Elasticsearch ruby 查询中添加 OR 条件?
Posted
技术标签:
【中文标题】如何在 Elasticsearch ruby 查询中添加 OR 条件?【英文标题】:How to add OR condition in Elasticsearch ruby query? 【发布时间】:2016-09-22 07:40:31 【问题描述】:在我的用例中,我想在 Elasticsearch 查询中添加 OR 条件。这是我的查询,
query_body =
'query' =>
'bool' =>
'must' => [ 'range' => '@timestamp' => 'from' => stream_filters[:first_time].gmtime.strftime("%Y-%m-%dT%H:%M:%SZ"), 'to' => stream_filters[:second_time].gmtime.strftime("%Y-%m-%dT%H:%M:%SZ") , 'term' => "@timeout" => true , 'term' => "@dest" => dest , 'term' => "@source" => source ]
, 'facets' => facets
我想为@dest 加上'term' => "@dest" => ' '
空检查以及'term' => "@dest" => dest
我尝试添加 or 条件,但它不起作用。
query_body =
'query' =>
'bool' =>
'must' => [ 'range' => '@timestamp' => 'from' => stream_filters[:first_time].gmtime.strftime("%Y-%m-%dT%H:%M:%SZ"), 'to' => stream_filters[:second_time].gmtime.strftime("%Y-%m-%dT%H:%M:%SZ") , 'term' => "@timeout" => true , 'term' => "@source" => source ],
'filter' =>
'or' => [
'term' => "@dest" => dest
'term' => "@dest" => ' '
]
, 'facets' => facets
有人可以帮我解决这个问题吗?
【问题讨论】:
【参考方案1】:您的过滤器子句中似乎有语法错误。请尝试以下正确的语法:
'filter' =>
'or' => [
'term' => "@dest" => dest
,
'term' => "@dest" => ' '
]
【讨论】:
以上是关于如何在 Elasticsearch ruby 查询中添加 OR 条件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使 ElasticSearch 客户端在应用程序范围内可用?
在 elasticsearch-ruby 中使用 percolate 进行批量索引
使用标准库Ruby将数据标记到Elasticsearch批量中
ruby Elasticsearch公式,用于在brew包管理器1中使用最新(0.90.7)版本的elasticsearch服务器。 brew安装弹性体
ruby 在Heroku上使用Rails&searchkick gem安全地使用Amazon Elasticsearch(签名请求)。