Node.js Get suggest simple“短语查询值返回”;“未定义”;
如何从elasticsearch nodejs客户端获取建议的查询值 我有这样一个索引名为test:Node.js Get suggest simple“短语查询值返回”;“未定义”;,node.js,typescript,
elasticsearch,Node.js,Typescript,
elasticsearch,如何从elasticsearch nodejs客户端获取建议的查询值 我有这样一个索引名为test: PUT test { "settings": { "index": { "number_of_shards": 1, "analysis": { "analyzer": { "trigram": { "type": "custom", "tokenizer": "standar
PUT test
{
"settings": {
"index": {
"number_of_shards": 1,
"analysis": {
"analyzer": {
"trigram": {
"type": "custom",
"tokenizer": "standard",
"filter": ["lowercase","shingle"]
},
"reverse": {
"type": "custom",
"tokenizer": "standard",
"filter": ["lowercase","reverse"]
}
},
"filter": {
"shingle": {
"type": "shingle",
"min_shingle_size": 2,
"max_shingle_size": 3
}
}
}
}
},
"mappings": {
"properties": {
"word": {
"type": "text",
"fields": {
"trigram": {
"type": "text",
"analyzer": "trigram"
},
"reverse": {
"type": "text",
"analyzer": "reverse"
}
}
}
}
}
}
并希望通过elasticsearch客户端通过以下方式获取建议。简单的\u短语值:
getElasticSearchResult: (_, params, context) =>
new Promise((resolve, reject) => {
const param: RequestParams.Search = {
index: 'test',
body: {
suggest: {
text: 'params.searchText',
simple_phrase: {
phrase: {
field: 'word.trigram',
size: 1,
gram_size: 3,
direct_generator: [
{
field: 'word.trigram',
suggest_mode: 'always',
},
],
highlight: {
pre_tag: '<em>',
post_tag: '</em>',
},
},
},
},
},
};
client
.search(param)
.then((result: ApiResponse) => {
resolve(result.body.suggest.simple_phrase);
console.log('---- ', resolve(result.body));
// keep results in array (allRecords)
})
.catch((err: Error) => {
console.log(err);
reject(err);
});
}).then(v => {
return allRecords;
}),
},
getElasticSearchResult:(\uUx、参数、上下文)=>
新承诺((解决、拒绝)=>{
常量参数:RequestParams.Search={
索引:'测试',
正文:{
建议:{
text:'params.searchText',
简单的短语:{
短语:{
字段:“word.trigram”,
尺寸:1,
克大小:3,
直流发电机:[
{
字段:“word.trigram”,
建议_模式:“始终”,
},
],
亮点:{
前标签:“”,
post_标记:“”,
},
},
},
},
},
};
客户
.search(参数)
.然后((结果:ApiResponse)=>{
解决(结果、正文、建议、简单短语);
log('---',resolve(result.body));
//将结果保存在数组中(所有记录)
})
.catch((错误:Error)=>{
控制台日志(err);
拒绝(错误);
});
}).然后(v=>{
返回所有记录;
}),
},
但是result.body是未定义的,为什么
请求正确,结果结构也正确,但内部所有内容都是空的。您能检查一下请求对象中返回的内容吗?您是指RequestParams对象吗?我在这行中谈论的是请求对象resolve(result.body.suggest.simple_phrase)它是空的,只是未定义