Elasticsearch设置词干和分析器问题

时间:2017-06-03 14:50:39

标签: javascript search elasticsearch fuzzy-search stemming

我通过包"elasticsearch": "12.1.3"在节点服务器上使用ES。 我批量插入我的文档。摘录:

var body = [];
_.each(rows, function(doc) {
    body.push({
        update: {
            _index: 'mytest',
            _type: 'mydoc',
            _id: doc.id,
            _retry_on_conflict: 3
        }
    });
    body.push({
        doc: doc,
        doc_as_upsert: true
    });
});
client.bulk({
    body: body
}, ...

根据需要,为了单独更新文档,我已经准备好了:

client.index({
    index: 'mytest',
    type: 'mydoc',
    id: doc.id,
    body: doc.body
}, ...);

到目前为止,一切都按预期工作。现在我正在尝试添加基本的“light_english”词干。 查看文档here 以及JS包here

我希望文档中的某些字段“模糊”匹配,因此我认为干预是要走的路?

我不清楚如何设置它。 假设我使用上面链接中的示例设置,这是否是正确的方法:

client.cluster.putSettings({
    "settings": {
        "analysis": {
            "filter": {
                "no_stem": {
                    "type": "keyword_marker",
                    "keywords": [ "skies" ] 
                }
            },
            "analyzer": {
                "my_english": {
                    "tokenizer": "standard",
                    "filter": [
                        "lowercase",
                        "no_stem",
                        "porter_stem"
                    ]
                }
            }
        }
    }
});

如果应用一次,那么这会对我上面的两个代码示例永久工作吗?

奖金问题:我可以使用什么样的默认分析器插件(或设置)?我的主要目标是搜索例如:“Günther”也匹配“gunther”,反之亦然。

在插入/更新文档之前,最好手动执行此操作,以便字符串更低,删除变音符号等?

0 个答案:

没有答案