8
考慮一個非常簡單的模型,我們有位置,每個位置可以有零個或多個事件。一個位置將具有諸如名稱,描述和地理位置數據(lon/lat)之類的屬性。一個事件應附加到一個位置(其父),並應有一個名稱和描述。我如何才能檢索匹配的孩子?
{
"location" : {
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
"description": { "type": "string", "analyzer": "snowball" },
"geo": { "type": "geo_point" },
"exhibits": {
"type": "nested",
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
"description": { "type": "string", "analyzer": "snowball" }
}
}
}
}
}
我希望能夠做的,是要查詢的執行他們的名稱和說明全文搜索子文件(事件)。我希望重新獲得匹配事件並能夠獲取其父母位置的名稱。我還想根據位置座標縮小結果集。我不想得到任何與查詢不匹配的事件。這在Elastic Search中可能嗎?我應該使用哪些類型的查詢?
我曾嘗試將事件作爲位置下的數組屬性(請參見上文)並使用nested
查詢,但它不返回我想要的結果類型(我認爲它返回整個位置,包括所有事件,甚至是那些不符合我的查詢)。我曾嘗試將事件放入單獨的索引(映射?),提供_parent屬性,然後對位置執行top_children
查詢,但我沒有得到任何結果。
{
"exhibit": {
"_parent": { "type": "locations" },
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
"description": { "type": "string", "analyzer": "snowball" }
}
}
}
任何人都可以點亮一下嗎?我不知道從哪裏開始...
非常有幫助,謝謝你的分享。您使用什麼JSON將新展覽添加到某個位置? – gjb
很酷,但你如何找回父母的名字? '「fields」:[「_parent」,「name」,「_source」]'將檢索孩子的名字,對嗎? – Yeggeps
@Yeggeps:是的,查詢正在尋找某些文檔的子項。你所要求的不屬於我的情況。 –