在弹性search中使用NOT和OR

这是我在弹性search中使用的查询来过滤满足一个条件或不满足其他条件的logging。

{ "query": { "query_string": { "query": "(NOT col1: \"val1\") OR (col2: val2)", "analyze_wildcard": true }}} 

问题是我不能在nodejs中编写等效的语法来提取信息。 我们不能使用must_not,因为它是OR条件

你将在数组中创build两个条件,因为如果有人匹配,你将得到结果的logging,你将不得不使用must matchmust match must_not match

 { "query": { "bool": { "should": [ { "bool": { "must_not": { "match": { "col1": { "query": "val1", "type": "phrase" } } } } }, { "match": { "col2": { "query": "val2", "type": "phrase" } } } ] } } }