如何在 DSL 查询中放置 AND、NOT 条件
How to put AND, NOT condition in DSL query
- 下面的查询将与程序员或测试人员一起搜索文档
query = {'from': 0, 'size': 30, 'query': {'bool': {'must': {'query_string': {'query': '*programmer* OR *tester*'}}}}}
如何获取包含 programmer and tester
而不是 manager
的文档
以下查询无效。
query = {'from': 0, 'size': 30, 'query': {'bool': {'must': {'query_string': {'query': '*programmer* AND *tester* NOT *manager*'}}}}}
Q2:我也弹出了很多结果,如何只显示结果 min_score > 5 ?
Q3:
如果我想用'programmer AND tester AND manager提取文档,如果三个字符串(programmer, tester,manager) 都存在那么只有如何提取?
可以使用must_not
查询。这是一个示例查询:
{
"from": 0,
"size": 30,
"query": {
"bool": {
"must": {
"query_string": {
"query": "*programmer* OR *tester*"
}
},
"must_not": {
"query_string": {
"query": "*manager*"
}
}
}
}
}
这在没有 must_not
查询的情况下也应该有效:
(*programmer* OR *tester*) AND NOT *manager*
- 下面的查询将与程序员或测试人员一起搜索文档
query = {'from': 0, 'size': 30, 'query': {'bool': {'must': {'query_string': {'query': '*programmer* OR *tester*'}}}}}
如何获取包含 programmer and tester
而不是 manager
以下查询无效。
query = {'from': 0, 'size': 30, 'query': {'bool': {'must': {'query_string': {'query': '*programmer* AND *tester* NOT *manager*'}}}}}
Q2:我也弹出了很多结果,如何只显示结果 min_score > 5 ?
Q3: 如果我想用'programmer AND tester AND manager提取文档,如果三个字符串(programmer, tester,manager) 都存在那么只有如何提取?
可以使用must_not
查询。这是一个示例查询:
{
"from": 0,
"size": 30,
"query": {
"bool": {
"must": {
"query_string": {
"query": "*programmer* OR *tester*"
}
},
"must_not": {
"query_string": {
"query": "*manager*"
}
}
}
}
}
这在没有 must_not
查询的情况下也应该有效:
(*programmer* OR *tester*) AND NOT *manager*