0
當前堆棧涉及的node.js v0.12.7與elasticsearch-JS> = 1.1.0與Elasticsearch 1.7 API運行。Elasticseach完成建議者返回建議
我當前elasticsearch設置被映射到具有索引1與2種類型:
elasticsearch.client.indices.create({
index: 'randomindex',
body: {
"settings": {
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 20
}
},
"analyzer": {
"autocomplete": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"autocomplete_filter"
]
},
"my_english": {
"type": "english",
"stopwords": "_english_"
}
}
}
},
'mappings': {
'countries': {
'properties': {
'country': {
'type': 'string',
'fields': {
"autocomplete": { "type": "string", "index_analyzer": "autocomplete", "search_analyzer": "my_english" }
}
},
"suggest_countries": {
"type": "completion",
"index_analyzer": "simple",
"search_analyzer": "simple",
"payloads": true
}
}
},
'some_other_type': {
'properties': {
"field_1": {
"type": "date"
},
"field_2": {
"type": "string"
},
"suggest_some_other_field": {
"type": "completion",
"index_analyzer": "simple",
"search_analyzer": "simple",
"payloads": false
}
}
}
}
}
});
我已經然後填充有相關的「輸入」,「輸出」和「有效載荷」字段都建議字段。
我想指定特定的索引類型從返回的建議,但我這樣做時,它拋出的錯誤:
elasticsearch.clients.suggest({
index: "randomindex",
type: "countries",
body: {
"suggest": {
text: query,
completion: {
"field": "suggest_countries"
}
}
}
});
有什麼辦法我可以指定/指向特定類型的。建議方法?
請分享錯誤ES扔。 – Val
當我在節點上運行它時沒有錯誤。它只是在響應對象中返回一個空的選項數組。然而,當我嘗試通過谷歌瀏覽器的Sense擴展等客戶端訪問'/ randomindex/countries/_suggest'端點時,我傳遞了類似'{「suggest_countries」:{「text」:「a」,「completion」:{ 「field」:「suggest_countries」}}}'它會拋出一個錯誤,如'MapperParsingException [解析失敗];嵌套:ElasticsearchIllegalArgumentException [未知字段名稱[文本],必須是[輸出,上下文,輸入,重量,有效載荷]];'中的一個。 –
我可以確保我已經在'autocomplete_countries'類型中正確填充'suggest_countries'字段,因爲我已經在端點'/ randomindex/countries/_search'上檢查了Sense,並且一切似乎都在那裏。 –