我想知道我的問題的解決方案:
假設我的 Elasticsearch 檔案中有一個 artistId 和 songId。
我想查詢這樣的檔案:
如果可能,使用詞條查詢使用 songId 進行查詢,但如果沒有與給定的 songId 匹配的結果,我想使用artistId 進行查詢。在這里我要進行的邏輯是對 songId 的優先查詢。這個分數應該高于artistId。匹配同一個songId!如果我的查詢結果中沒有相同的songId,我可以用artistId再次查詢。但我無法在沒有 2 個查詢的情況下找到解決方案。
我只想通過一個查詢應用它,是否可以使用彈性搜索查詢?
我找到了多匹配查詢:
{
"multi_match" : {
"query": "songId12345",
"fields": [ "songId^3", "artistId" ]
}
}
使用此查詢,我的 songId 被優先考慮,但我無法為我的查詢提供相同的 bot songId 值和 artistId 值:songId12345 我的 artistId 值必須不同于 songId。也許我可以用新欄位保持價值,比如
混合欄位:songId - 藝術家 ID
但它也不應該完全正常作業。
摘要:找到我相同的歌曲ID,如果我的查詢確實回傳任何值,請使用相同的artistId 找到我并使用恰好1 個查詢來執行此操作
任何想法?謝謝你的時間。
uj5u.com熱心網友回復:
這里的一種方法是使用boolean查詢并使用should子句組合您的查詢。
此外,您需要boostsongId子句。查詢會是這樣的:
{
"query": {
"bool": {
"should": [
{
"match": {
"songId": {
"query": "song123",
"boost": 2
}
}
},
{
"match": {
"artistId": {
"query": "artist123"
}
}
}
]
}
}
}
在此處閱讀全文
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429526.html
