我对字段status、location\u id的精确匹配查询如下所示:
{'query': {'constant_score': {'filter': {'bool': {
'must': [{'bool': {'should': [{'terms': {'status': ['Open', 'not complete']}}]}},
{'bool': {'should': [{'terms': {'location_id': [1652]}}]}}],
'must_not': []}}}},
'sort': [{'id': {'order': 'asc', 'unmapped_type': 'long'}}]}
假设上面的查询返回50条记录,现在在这50条记录中我想在其中一列中搜索一个单词。例如,列是description,单词是test。如何将上述查询与此搜索词查询组合。搜索列可以是必须查询的列(状态/位置)
简而言之,我希望所有状态为open/not complete,位置为\u id==1652的记录和文本中任何位置有单词“test”的descreption字段
我尝试了简单的查询字符串和查询字符串,但出现了错误。不确定我可以把它放在上面的嵌套查询中。
我用match尝试了下面的查询,但没有写入任何记录:
{'query': {'constant_score': {'filter': {'bool': {
'must': [{'bool': {'should': [{'terms': {'status': ['Open', 'not complete']}}]}},
{'bool': {'should': [{'terms': {'location_id': [1652]}}]}},
{'bool': {'should': [{'match': {'description': 'test'}}]}}],
'must_not': []}}}},
'sort': [{'id': {'order': 'asc', 'unmapped_type': 'long'}}]}
使用查询字符串的工作查询
{'query': {'constant_score': {'filter': {'bool': {
'must': [{'bool': {'should': [{'terms': {'status': ['Open', 'not complete']}}]}},
{'bool': {'should': [{'terms': {'location_id': [1652]}}]}},
{'query_string': {"default_field": "description",
"query": "*test*"}}],
'must_not': []}}}},
'sort': [{'id': {'order': 'asc', 'unmapped_type': 'long'}}]}
1条答案
按热度按时间flseospp1#
您可以使用布尔查询
查询匹配与其他查询的布尔组合匹配的文档。
添加索引数据、搜索查询和搜索结果的工作示例。以下搜索查询用于满足您的以下要求:
简而言之,我希望所有状态为open/not complete,位置为\u id==1652的记录和文本中任何位置有单词“test”的descreption字段
索引数据:
搜索查询:
搜索结果: