我想在Java中创建一个弹性查询。
查询是
从表名中选择*(col1 == 1 && col2 == 2)|| (col3 == 3 && col4 == 4);
答案 0 :(得分:0)
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html
弹性搜索查询中的“应该”和“必须”的组合将使您找到所需的内容。
必须
该子句(查询)必须出现在匹配的文档中,并将有助于得分。
过滤器
子句(查询)必须出现在匹配的文档中。但是与查询分数不同的是,忽略该分数。 Filter子句在过滤器上下文中执行,这意味着计分被忽略,并且子句被视为用于缓存。
应该
子句(查询)应出现在匹配的文档中。
不得
子句(查询)不得出现在匹配的文档中。子句在过滤器上下文中执行,这意味着计分被忽略,并且子句被视为用于缓存。因为忽略了计分,所以所有文档的分数都将返回0。
答案 1 :(得分:0)
如果要以sql样式进行查询并将结果作为JSON对象返回,则可以使用弹性搜索查询。 请求示例:
POST _sql?format=json
{
"query": """select "host.name", avg("system.fsstat.total_size.used")/avg(system.fsstat.total_size.total) * 100 as used_percent from "metricbeat*" where "@timestamp" >= NOW() - INTERVAL 60 MINUTE group by host.name"""
}