我很难在我的代码中完成Completion Suggester。
我正在尝试创建一个自动完成组件,用于搜索以前运行的查询。我想使用Completion Suggester。
我有以下映射:
$('.go-btn').click(function() {
window.open("#my-dropdown", "_blank");
});
我想在 keywordSearch_en 字段上运行建议。我试过了
{
"liferay-20116": {
"mappings": {
"querySuggestion": {
"properties": {
"companyId": {
"type": "string",
"index": "not_analyzed",
"store": true
},
"keywordSearch_en": {
"type": "string",
"fields": {
"ngram": {
"type": "string",
"analyzer": "gsearch_shingle_analyzer",
"search_analyzer": "standard"
},
"suggest": {
"type": "completion",
"analyzer": "simple",
"payloads": false,
"preserve_separators": true,
"preserve_position_increments": true,
"max_input_length": 50,
"context": {
"company": {
"type": "category",
"path": "companyId",
"default": [
"20116"
]
}
}
}
}
}
}
}
}
}
}
我只收到此错误消息:“字段[建议]不是完成建议字段”。
我做错了什么?
答案 0 :(得分:0)
您使用了错误的_suggest语法。
语法应该是这样的。
curl -XPOST 'localhost:9200/_suggest' -d '{
"my-suggestion" : {
"text" : "the amsterdma meetpu",
"term" : {
"field" : "body"
}
}
}'
你应该记住_search比_suggest更好。引用here
为了节省一些网络开销,请从中过滤掉不必要的字段 _source使用源过滤来最小化_source大小。请注意,_suggest端点不支持源过滤,但在_search端点上使用suggest
如果你想使用你的语法 正在使用截至目前。建议应该与_search端点一起使用 使用这样的东西。
POST music/_search
{
"_source": "suggest",
"suggest": {
"song-suggest" : {
"completion" : {
"field" : "suggest"
}
}
}
}
答案 1 :(得分:0)
问题在于建议字段的嵌套。工作机构应该是:
POST liferay-20116/_suggest
{
"my-suggester": {
"text": "service",
"completion": {
"field": "keywordSearch_en.suggest"
}
}
}
我遇到的问题还在于我搞错了我的错误类型查询的映射,然后字段名称变得重复,建议停止工作。