我想搜索查询的一部分以被视为短语。例如,我想搜索“你能向我展示酒店和航空业的文件吗”在这里我希望将航空业视为短语。我在 multi_match 中找不到任何此类设置. 即使我们尝试使用 multi_match 查询,使用 "Can you show me documents for Hospitality 和 \"Airline Industry\"" 。默认分析器将其分解为单独的标记。我不想更改分析器的设置。而且我发现我们可以在 simple_query_string 中执行此操作,但这会导致我们无法像在 multi_match 布尔查询中那样应用过滤器选项,因为我也想在某些字段上应用过滤器。
search_text="Can you show me documents for Hospitality and Airline Industry" 现在我想将 Airline Industry 作为短语传递,以针对 2 个字段搜索我的索引文档。好的,所以说我有这样的现有代码。
If filter:
qry={
“query":{
“bool”:{
“must”:{
"multi_match":{
"query":search_text,
"type":"best_fields",
"fields":["TITLE1","TEXT"],
"tie_breaker":0.3,
}
},
“filter”:{“terms”:{“GRP_CD”:[“1234”,”5678”] }
}
}
else:
qry={
"query":{
"multi_match":{
"query":search_text',
"type":"best_fields",
"fields":["TITLE1",TEXT"],
"tie_breaker":0.3
}
}
}
'但后来我意识到,即使我传递了这样的搜索字符串,我也意识到这段代码没有将航空业作为一个短语来处理,“你能给我看一下酒店业和“航空业”的文件吗?”
根据弹性搜索文档,我知道有这个查询可以处理这个
qry={"query":{
"simple_query_string":{
"query":"Can you show me documents for Hospitality and \"Airline Industry\"",
"fields":["TITLE1","TEXT"] }
} }
但是现在我的问题是,如果用户想要应用过滤器..with 过滤器查询,我无法通过 simple_query_string' 传递短语和布尔查询