elasticsearch - 查询带有和不带重音的单词的 Elasticsearch 索引
问题描述
我查询“café”这个词,得到 20 篇文章。然后我重复搜索“cafe”这个词,只会得到 3 篇文章。所以我正在寻找一种可能性来处理带有重音字母的单词,就像处理带有没有重音字母的单词一样。
我的问题也是,我已经有一个填充索引,所以我必须修改现有系统。我正在使用 Elasticsearch 6.5。
我找到了一些有用的信息,并完成了以下步骤:
设置折叠分析仪
curl -H "Content-Type: application/json" --user <user:pass> -XPUT http://localhost/test/_settings?pretty -d '{
"analysis": {
"analyzer": {
"folding": {
"tokenizer": "standard",
"filter": [ "lowercase", "asciifolding" ]
}
}
}
}'
修改内容字段的现有映射
curl -H "Content-Type: application/json" --user <user:pass> -XPUT http://localhost/test/mytype/_mapping -d '{
"properties" : {
"content" : {
"type" : "text",
"fields" : {
"folded" : {
"type" : "text",
"analyzer" : "folding"
}
}
}
}
}'
进行搜索
curl -H "Content-Type: application/json" --user <user:pass> -XGET http://localhost/test/_search -d '{
"query" : {
"bool" : {
"must" : [
{
"query_string" : {
"query" : "cafe"
}
}
]
}
},
"size" : 10,
"from" : 0
}'
但效果和之前一样:我只找到带有“cafe”的文章,没有找到带有“café”的文章。有什么我想念的吗?
解决方案
伟大的开始!您已经创建了一个新的分析器并更改了映射,但是,您现在还需要重新索引数据以填充新content.folded
字段。
您可以通过这样的查询端点调用更新来非常轻松地做到这一点:
curl --user <user:pass> -XPOST http://localhost/test/_update_by_query
推荐阅读
- php - 如何在 WordPress 中添加带有自定义后缀的新图像尺寸?
- azure - Azure DevOp-部署组-使目标 VM 联机
- excel - Excel冻结特定列
- maven - Intellij 2020.3 for maven 项目中的 Jhipster v6.10.5 javax.servlet 错误
- reactjs - 右键单击引导 OverlayTrigger?
- javascript - 当提到更高的角色时返回
- c# - 在 docker 中运行 C# 控制台应用程序 .NET Framework 4.5.2
- mysql - 优化“转发”MySQL 查询
- javascript - 无法使用电子读取 /node_modules/bindings/bindings.js 处未定义的属性“模块”并安装串行端口
- c# - 带有类型 HttpClient 的客户端证书在 .net 5 Linux 容器中不起作用