假設我有 3 個不同的欄位,文本型別的 A,int 型別的 B,日期型別的 C。我對所有 3 個欄位的其他查詢條件。除此之外,我想給欄位 C 賦予更多權重,然后是 B,然后是 A。即 A 正在尋找具有單詞“xyz”的文本并且它的優先級較低,比如說 1 B 的權重正在尋找大于 100 的值并且它具有某些優先級,例如權重為 5,C 的日期應大于 2022 年 6 月,并且其具有更高的權重優先級 10。
如何撰寫 es 查詢來執行此操作
uj5u.com熱心網友回復:
這是您的查詢。請針對您的資料進行測驗,并檢查此查詢是否滿足您的要求。
GET index-name/_search
{
"query": {
"bool": {
"must": [
{
"function_score": {
"functions": [
{
"filter": {
"multi_match": {
"query": "search-text",
"fields": [
"field-A"
]
}
},
"weight": 1
},
{
"filter": {
"range": {
"field-B": {
"gt": 100
}
}
},
"weight": 5
},
{
"filter": {
"range": {
"field-C": {
"gte": "2022-06-01"
}
}
},
"weight": 10
}
],
"score_mode": "max",
"boost_mode": "replace"
}
}
]
}
},
"_source": ["field-A", "field-B", "field-C"] ----> if you want verify with limited fields
}
uj5u.com熱心網友回復:
您可以提高您的查詢。檢查此鏈接:
彈性搜索 8.4
彈性搜索 7.17
希望這有助于構建您的查詢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/513919.html
