elasticsearch - 标准分析器的 Elasticsearch 自定义分隔符
问题描述
是否可以为分析仪提供自定义的分隔符列表standard
?
我的应用程序提供了一个元素下拉列表,我可以在其中选择dog,cat,mouse
该值并将其用作搜索过滤器。我希望能够选择狗、猫或鼠标作为过滤器值。请注意,逗号不是此元素字段的唯一分隔符。我也可以有dog&cat
或dog<br>cat
或dog;cat;mouse
字段映射:
"mappings": {
"properties": {
"element": {
"type": "text",
}
................
}
}
解决方案
您可以使用可以将特定字符替换为其他字符的char_filter,
&
,elasticsearch 已经中断,对于其他字符(不是分隔符),您可以在 char_filter 中定义它们。
您还可以使用如下所示的分析 API 来查看 char_filter 是否正确替换了您的分隔符。
由于<br>
HTML 代码和标准分析器将为它创建一个标记,因此您可以使用html_strip
char_filter,如下所示:
{
"tokenizer" : "standard",
"filter" : ["lowercase"],
"char_filter" : ["html_strip"],
"text" : "dog<br>cat"
}
{
"tokens": [
{
"token": "dog",
"start_offset": 0,
"end_offset": 3,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "cat",
"start_offset": 7,
"end_offset": 10,
"type": "<ALPHANUM>",
"position": 1
}
]
}
推荐阅读
- linux - 嘿,有人可以帮我了解同步系统调用的用法吗?
- c++ - 函数返回的局部变量是否在 C++20 中自动移动?
- ftp - Azure 逻辑应用 - FTP 连接下载 zip 文件到 Blob 存储 - 输出 zip 文件损坏
- android - React Native:RNCallKeep.displayIncomingCall 不起作用
- python-3.x - 从 PIL 图像 python 中提取小区域
- regex - 在 HTML 不规则模式中使用正则表达式获取特定单词
- angular - Angular Reactive Forms - 添加动态组元素 - 单选按钮问题
- php - 如何获取 Twig 数组中的关键位置?
- git - 如何撤消 git checkout -B 分支?
- javascript - 之前配置的 ChromeDriver 服务仍在运行