【发布时间】:2021-04-15 18:19:19
【问题描述】:
为什么要根据我的三个条件来获得所有结果:
...
"must": [
{
"query_string": {
"analyze_wildcard": true,
"query": "* AND (name:\"NAME 1\" OR name:\"NAME 2\" OR name:\"NAME 3\")"
}
},
...
而不是
...
"must": [
{
"query_string": {
"analyze_wildcard": true,
"query": "* AND name:\"NAME 1\" OR name:\"NAME 2\" OR name:\"NAME 3\""
}
},
...
第一个查询返回所有具有 NAME 1、NAME 2 和 NAME 3 的文档,但第二个查询仅返回具有术语NAME 1。
此外,下面的查询仅返回 NAME 3
...
"must": [
{
"query_string": {
"analyze_wildcard": true,
"query": "name:\"NAME 1\" OR name:\"NAME 2\" OR name:\"NAME 3\" AND *"
}
},
...
这没有意义,因为如果我使用不存在的术语创建查询,例如:" * AND name: \ "asdfasdfa \" OR name: \ "NAME 2 \" OR name: \ "NAME 3 \" ",我将得到一个空答案并考虑代码条件:
true && false || true || true 是true
true && (false || true || true) 还有true
和,
'a' && null || 'b' || 'c' 是'b'
'a' && (null || 'b' || 'c') 还有'b'
【问题讨论】:
标签: elasticsearch lucene elasticsearch-query