我通过包"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”,反之亦然。
在插入/更新文档之前,最好手动执行此操作,以便字符串更低,删除变音符号等?