0
我使用谷彈性和使用頭插件構建查詢的布爾搜索,我結合多個查詢巢ElasticSearch:使用嵌套查詢和嵌套布爾搜索對象
有關DB結構和彈性映射
注意事項
- 數據庫中的每個文件被鏈接到特定的簡檔,其 又具有多個屬性
- 每個文檔有多個屬性v與此相關的線索
在此查詢中,我試圖獲取具有特定配置文件和屬性值> 30的所有文檔,因爲該屬性應僅具有屬性Id 2。
SQL查詢:
選擇AV *,從文件d d.name內連接上的AttributeValue AV d.DocumentId = av.DocumentId 其中d.profileid = 1和av.AttributeId = 2和av.Intvalue> 30
彈性查詢
{ "query": {
"bool": {
"must": [
{
"term": { "Document.profileid": "1" }
}
,
{
"term": {"Document.lstChildren.AttributeID": "2" }
}
,
{
"range": { "Document.lstChildren.IntValue": { "gt": "30"} }
}
,
{
"match_all": { }
}
],
"must_not": [ ],
"should": [ ]
}
}, "from": 0, "size": 10, "sort": [ ], "facets": { }
}
問題
結果還包含具有以下屬性的文檔值
- 屬性值= 3和屬性Id = 2(值是< 30)
- 屬性值= 34,但與屬性Id大於2 (不正確的)不同
本文件不能包含因爲它不能滿足我的需求。
我該如何構建這個查詢?
您可能感興趣的樣品文件和索引映射? – Rob
你可以嘗試從你的'must'列表中刪除''match_all「:{}'查詢嗎?這是完全沒有必要的,如果因爲它而出現一些錯誤,我不會感到驚訝。 – Sam
@Sam'match_all「:{}'沒有解決問題 – Coding