1
我想使用elasticsearch實現自動完成功能。其中我的工作對指數的結構是這樣的
elasticsearch中的嵌套聚合
"title": "blog post 1",
"body": "body of the blog post",
"category": "programming",
"locations": [
{"name": "united states"},
{"name": "new york"},
{"name": "venice"}
]
我試圖使用嵌套聚合。我現在用的映射是這樣的
{
blog : {
mappings : {
tag : {
properties : {
body : {
type : string
},
category : {
type : string
},
locations : {
properties : {
name : {
type : string
}
}
},
title : {
type : string
}
}
}
}
}
}
這是爲了聚集的locations.name
的基礎上對結果的查詢是
GET /blog/tag/_search
{
"size": 0,
"query": {
"match": {
"locations.name": "montreal"
}
},
"aggs": {
"aggregated_locations": {
"nested": {
"path": "locations"
},
"aggs": {
"filtered_locations": {
"terms": {
"fields": "locations.name"
}
}
}
}
}
}
目前我使用的elasticsearch鉻插件執行上述要求。上面的查詢給出了一個很長的錯誤,但如果有人提示,我也可以發佈它。我想我解釋嵌套聚合的含義可能是錯誤的,這意味着我的映射是錯誤的。但我無法弄清楚問題出在哪裏。
我用過 - >'curl -XGET'localhost:9200/blog/_mapping/tag?pretty'>! test.json'來獲得新的映射。但test.json是一個巨大的文件。它有很多冗餘。這是正常的行爲嗎? –
那麼我究竟做了什麼刪除了我的索引,運行了映射,然後創建了新的索引....我的工作流出了什麼問題?我是elasticsearch的新手。 –
您無法更新映射,工作流是否正確,您需要先刪除索引。有一篇博客文章在此處進行了解釋(https://www.elastic.co/blog/changing-mapping-with-zero-downtime),並指導您在零宕機時間內完成此任務。 –