【发布时间】:2016-05-01 15:00:51
【问题描述】:
我在 Elastic 搜索中遇到了 NOT 运算符的一些问题,这是我的查询
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "-et_tax:\"Agriculture\" -et_tax:\"Airports/Ports\""
}
}
}
},
"aggs": {
"lawfirmcount": {
"cardinality": {
"field": "pd_lawfirmID",
"precision_threshold": 1250
}
}
}
}
我正在使用 PHP 和 MySQL 构建查询。当我使用上面显示错误的结果时,我需要在我的总结果中排除这些结果,我期望结果显示所有记录,但不在 et_tax 列中显示为 Agriculture AND Airport /端口。那么如何在查询中使用多个 NOT 运算符。
更新:
当我通过相同的查询 AND/OR 时,两者都会显示相同的结果,
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "-et_tax:\"Agriculture\" AND -et_tax:\"Airports/Ports\""
}
}
}
},
"aggs": {
"lawfirmcount": {
"cardinality": {
"field": "pd_lawfirmID",
"precision_threshold": 1250
}
}
}
}
上面用 AND 运算符会显示 1564 条记录,下面用 OR 运算符也会显示相同的计数。
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "-et_tax:\"Agriculture\" OR -et_tax:\"Airports/Ports\""
}
}
}
},
"aggs": {
"lawfirmcount": {
"cardinality": {
"field": "pd_lawfirmID",
"precision_threshold": 1250
}
}
}
}
提前致谢,
【问题讨论】:
-
可以分享
et_tax字段的映射关系吗? -
query_string 的默认运算符是 OR。您需要更改默认运算符或在条件之间添加 AND。 elastic.co/guide/en/elasticsearch/reference/current/…
-
@val
et_tax被映射为字符串 -
@satheesh 是否要排除包含 Airports/Ports 和 Agriculture 关键字的 et_tax?
-
是的@Richa 我需要排除上述关键字的结果。
标签: php mysql elasticsearch elasticsearch-jdbc-river