我创建了一个名为businesses
的索引,每个文档都将具有如下字段:name
,industry
和city
:
client.indices.create({
index: 'businesses',
body: {
mappings: {
_doc: {
properties: {
name: {
type: "completion",
analyzer: "simple",
search_analyzer: "simple"
},
industry: {
type: "completion",
analyzer: "simple",
search_analyzer: "simple"
},
city: {
type: "text",
analyzer: "simple",
search_analyzer: "simple"
}
}
}
}
}
})
我想创建一个completion suggester
,用户在其中输入业务的name
或industry
,它应该返回结果。
我像这样插入文档:
client.index({
index: 'businesses',
type: '_doc',
id: '1',
body: {
name: 'Sports Center',
industry: 'sports',
city: 'london'
}
});
但是我不知道如何做search
。我已经尝试了以下方法,但是不起作用:
client.search({
index: 'businesses',
body: {
prefix: 'sport',
completion: {
field: "name",
fuzzy: true,
size: 10
}
}
});
以上只是产生错误。如何进行正确的完成建议查询?
答案 0 :(得分:0)
看来您做错了两件事。首先插入文件应该是:
client.index({
index: 'businesses',
type: '_doc',
id: '1',
body: {
name: { input ['Sports Center'] },
industry: { input ['sports'] },
city: 'london'
}
});
作为完成插入时,应为:“输入”:[值]。
第二件事是搜索:
client.search({
index: 'businesses',
type: '_doc',
body: {
"suggest": {
"whicheverNameYouWant": {
"prefix": "sport",
"completion": {
"field": "name",
"fuzzy": {
"fuzziness": "auto"
}
}
}
}
}
在这里您需要搜索建议类型。