elasticsearch - 如何在 Elasticsearch Normalizer 中修剪所有空格
问题描述
我发现带有trim
过滤器的规范化器没有修剪所有空白字符,例如\u2007
没有修剪。有没有办法在规范器中修剪所有空白字符?我试图将模式替换字符过滤器附加到规范器,但这似乎不受支持 - https://github.com/elastic/elasticsearch/issues/28605。
解决方案
添加带有索引数据、映射、搜索查询和搜索结果的工作示例
索引映射:
{
"settings": {
"analysis": {
"normalizer": {
"my_normalizer": {
"type": "custom",
"filter": [
"lowercase",
"trim"
]
}
}
}
},
"mappings": {
"properties": {
"foo": {
"type": "keyword",
"normalizer": "my_normalizer"
}
}
}
}
分析API:
GET /_analyze
{
"normalizer" : "my_normalizer",
"text" : " Hello"
}
生成的令牌是
{
"tokens": [
{
"token": "hello",
"start_offset": 0,
"end_offset": 6,
"type": "word",
"position": 0
}
]
}
指数数据:
{
"foo":" HellO "
}
{
"foo":"hello "
}
{
"foo":"hellO"
}
搜索查询:
{
"query": {
"term": {
"foo": "hello"
}
}
}
搜索结果:
"hits": [
{
"_index": "67331196",
"_type": "_doc",
"_id": "1",
"_score": 0.105360515,
"_source": {
"foo": " hello"
}
},
{
"_index": "67331196",
"_type": "_doc",
"_id": "2",
"_score": 0.105360515,
"_source": {
"foo": " Hello"
}
},
{
"_index": "67331196",
"_type": "_doc",
"_id": "3",
"_score": 0.105360515,
"_source": {
"foo": " HellO "
}
}
]
推荐阅读
- javascript - 如何使用 sheetJS 和节点读取上传文件的工作表数据?
- idl - 在 Ubuntu 20 上的 GDL 中定义函数时出错
- amazon-web-services - 在不下载大 zip 文件的情况下读取 Amazon S3 上 .zip 文件中的 xml 文件?
- git - 如果我忘记推送提交并从本地开发分支创建功能分支,如何解决 GIT 冲突?
- groovy - 在 jenkinsfile 中使用 makrup 发布链接
- symfony - 从 MappedSuperClass 到实体的教义关系
- python - 使用散点图可视化列表字典中的数据
- wordpress - 单个自定义帖子类型模板(使用 Timber/Twig 的 WordPress)不起作用
- merge - 为数据集 A 中的每个变量复制数据集 B
- python - 为什么 on message 事件会工作几分钟然后停止工作?