提问人:Silent Killer 提问时间:11/21/2022 最后编辑:James ZSilent Killer 更新时间:11/22/2022 访问量:114
Elasticsearch either or 条件、Or 条件、IF Else 条件、优先级查询
Elasticsearch either or condition, Or condition , IF Else condition, Priority query
问:
我有两个关于短语匹配和标记匹配的查询。我希望仅在短语匹配失败时触发标记化匹配。
所以查询 A=短语匹配,查询 B=标记化匹配。
GET /content_card/_search
{ "size":1000,
"track_total_hits": true,
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "The Chosen",
"fields": [
"title^9",
"original_title^9"
],
"type": "phrase_prefix",
"boost": 9
}},
{
"multi_match": {
"query": "The chosen",
"fields": [
"title^9",
"original_title^9",
"content_type^9",
"type^7",
"content_category^7",
"genres^7",
"lang_names^7",
"keywords^7",
"cast_names^7",
"crews^7",
"country_names^5",
"overview^5",
"company_names^5",
"network_names^5",
"additional_company_names^5",
"content_status^1",
"release_year^1",
"ratings^1",
"seasons_names^1",
"episodes_names^0",
"_charcters^1"
],
"type": "best_fields"
}
}
],
"minimum_should_match": 1
}
}
}
简单地使用 should 使查询 B 的结果在显示完查询 A 的结果后显示。我只想将查询 B 结果作为查询 A 的回退。任何人都可以帮忙获得查询的解决方案。如果有其他方法,也请告诉我。重复以下行以发布查询
答:
1赞
Amit
11/21/2022
#1
您正在查找的内容在 Elasticsearch 中是不可能的,您没有在 Elasticsearch 中触发查询的条件方式,您需要在进行这些 Elasticsearch 查询的应用程序中处理,这很容易实现,对于每个 Elasticsearch 查询,都不会返回任何搜索结果,如果它为 0,您可以发送标记化或第二个查询。
看起来您对 Elasticsearch 中的布尔查询/子句感到困惑,请参阅官方文档,该文档通过很好的例子解释了这个概念以获取更多信息。
评论