ElasticSearch-Node.js中的完成建议器

时间:2018-12-06 03:23:10

标签: javascript node.js elasticsearch

我创建了一个名为businesses的索引,每个文档都将具有如下字段:nameindustrycity

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,用户在其中输入业务的nameindustry,它应该返回结果。

我像这样插入文档:

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
        }
    }
});

以上只是产生错误。如何进行正确的完成建议查询?

1 个答案:

答案 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"
                     }
                 }
             }
         }
     }

在这里您需要搜索建议类型。