[英]How to query elasticsearch based on response
我試圖查詢 elasticsearch 以執行以下操作:
數據進入 Elastic
Order Number Product Name
order1 Chicken
order2 Banana
order3 Chicken
order1 Cucumber
order2 Chicken
order3 Apples
order1 Flour
order2 Rice
order3 Nuts
這是我用來獲取產品名稱的查詢
{
"query" : {
"match" : {
"ProductName" : "Chicken"
}
結果:所有包含雞肉的訂單
Order Number Product Name
order1 Chicken
order3 Chicken
order2 Chicken
我想達到的目標:
如果上述訂單中包含雞肉,那么請給我所有與雞肉一起購買的其他產品。
Order Number Product Name
order1 Cucumber
order2 Banana
order3 Apples
order1 Flour
order2 Rice
order3 Nuts
我如何去構建一個查詢來做到這一點? 請幫助我對elasticsearch很陌生。
這個問題有許多不同的答案,它實際上歸結為您想用這些數據做什么,而不是您所要求的。
然而,假設您想要做的就是獲取包含特定產品的所有訂單,我建議您稍微更改索引結構。
您正在以一種非常類似於SQL 的方式索引數據。 相反,您應該考慮文檔或實體。 在我看來,“訂單”應該作為單個文檔存在。 它可能看起來像這樣:
"order": {
"properties": {
"orderNumber": {
"type": "string"
},
"product": {
"properties": {
"name": {
"type": "string"
}
}
}
}
}
也就是說,單個訂單是一個文檔,它可以包含多個產品。 這將允許您獲取包含“Chicken”或其他任何內容的所有訂單,但也允許您按 orderNumber 獲取所有產品的列表。
同樣,這在很大程度上取決於您打算如何使用您的數據,我要記住的主要事情是 elasticsearch 不是關系數據庫。 您必須更多地考慮如何存儲事物,因為在查詢時您無法進行復雜的連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.