java - Elasticsearch 中 - 运算符的用法

标签 java elasticsearch

我运行此查询,它返回 15 个产品

+(+organizationId:6 +(mainGenre:dance alternateGenre:dance) +(state:pending state:published state:accepted)) +(alias:audioProduct)

因此,这意味着有 15 个organizationId = 6 AND (Main_Genre=Dance 或 Alternate_Genre=Dance) 的产品。但是,下面看到的这个查询不会返回任何内容。

+(+organizationId:6 +(-mainGenre:pop -alternateGenre:pop) +(state:pending state:published state:accepted)) +(alias:audioProduct)

现在查询类似于“organizationId = 6 AND Main_Genre!=Pop AND Alternate_Genre!=Pop”。我认为它应该返回至少 15 个产品。我的意思是它应该返回为 MainGenre:Dance 找到的产品。

有人知道我在这里做错了什么吗?

最佳答案

(-mainGenre:pop -alternateGenre:pop)中,隐含了OR运算符,即它相当于

Main_Genre != pop 或 Alternate_Genre != pop

而你所追求的是

Main_Genre != pop AND Alternate_Genre != pop

您应该尝试这样做(请参阅 && 运算符):

+(+organizationId:6 +(-mainGenre:pop && -alternateGenre:pop) +(state:pending state:published state:accepted)) +(alias:audioProduct)

关于java - Elasticsearch 中 - 运算符的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30731062/

相关文章:

java - 从 baseActivity 类重写 onCreateOptionsMenu

elasticsearch - 我想用我自己的证书替换Search Guard演示证书

php - 在Elasticsearch中处理必须/应该

java - 如何通过 Java API 在 ElasticSearch 中重建索引

java - 在 Jruby 中访问 .jar 内的 java 类

对象数组的Java Stream Reduce

java - 扫描仪.nextDouble : txt file correctly loaded but "InputMismatchException" occurs

java - 如何在 Java 中加密,在 Android 和 iOS 中解密

join - 在单个 elasticsearch 查询中从父项和子项获取多个字段数据

javascript - 在Elasticsearch中搜索别名时如何引用各个索引中的特定字段?