弹性搜索/和嵌套可能?

Posted

技术标签:

【中文标题】弹性搜索/和嵌套可能?【英文标题】:elastic-search on/and nesting possible? 【发布时间】:2011-08-30 03:31:20 【问题描述】:

可以和/或嵌套在过滤器中吗? 我想过滤这样的东西...a=1 AND ( d=NULL OR d>5 )

谁能帮忙?

【问题讨论】:

和/或过滤器是可能的,但我可以嵌套它们吗? ...我想过滤,假设所有名称 ='rado' 和 date=NULL(或未设置)或 date >'current date'。日期不能设置或大于现在。 您还没有指定您在这里谈论的编程语言/环境/操作系统/等!尝试添加一些更合适的标签。 弹性搜索elasticsearch.org 【参考方案1】:

您可以在弹性搜索中使用这样的 Lucene 查询字符串:

http://www.elasticsearch.org/guide/reference/query-dsl/query-filter.html

这里是关于如何使用 () 进行分组的参考……需​​要注意的一点是,我发现在 group 语句前面加上 + 必须有符号会返回更准确的结果。

http://lucene.apache.org/java/3_2_0/queryparsersyntax.html

分组在最后。

...哦,如果您要使用大于 RangeQuery 可以通过 将上限或下限设置为空。

J.

【讨论】:

【参考方案2】:

这可能有点晚了,但如果其他人正在寻找这个,我发现搜索词 AND 过滤器很容易添加。只需在查询中使用更多单词并用空格分隔即可。

Scala 示例:

val queryString = client.prepareSearch().setQuery(QueryBuilders.matchQuery("json.path.to.node", "sky car")).setSize(MAX_RESULTS)
val response = queryString.execute().actionGet()

现在响应将包含包含sky AND car 的所有结果

【讨论】:

以上是关于弹性搜索/和嵌套可能?的主要内容,如果未能解决你的问题,请参考以下文章

弹性搜索如何索引嵌套列表

弹性搜索 - 使用嵌套过滤数组作为存储桶

如何在弹性搜索的过滤器聚合中引用多个嵌套级别?

如何在弹性搜索查询中组合和

使用弹性搜索设计搜索服务

是否有可能对弹性搜索中的热门命中结果进行聚合?