如何解决elk 的弹性搜索 dsl 区分大小写
我正在 ELK 上执行 Elasticsearch Query DSL 查询,例如:
{
"query": {
"wildcard": {
"url.path": {
"value": "*download*","boost": 1,"rewrite": "constant_score"
}
}
}
}
但它似乎区分大小写(所以只显示带有“下载”的信息,而不是“下载”或“下载”)。 即区分大小写。
我可以禁用它吗?并搜索不区分大小写?
解决方法
您可以使用 case_insensitive
参数进行通配符查询。该参数在7.10.0版本引入
添加一个包含索引数据、映射、搜索查询和搜索结果的工作示例
索引映射:
{
"mappings": {
"properties": {
"url": {
"properties": {
"path": {
"type": "wildcard"
}
}
}
}
}
}
索引数据:
{
"url":{
"path":"xx/download"
}
}
搜索查询:
{
"query": {
"wildcard": {
"url.path": {
"value": "*Download*","boost": 1,"rewrite": "constant_score","case_insensitive": false
}
}
}
}
搜索结果:
当您搜索 *Download*
或 *DOWNLOAD*
时不会有结果
更新 1:
如果您希望结果与 *download*
、*Download*
、*DOWNLOAD*
相匹配,那么所给出的查询将正常工作
{
"query": {
"wildcard": {
"url.path": {
"value": "*DOWNLOAD*","rewrite": "constant_score"
}
}
}
}
搜索结果是
"hits": [
{
"_index": "67210888","_type": "_doc","_id": "1","_score": 1.0,"_source": {
"url": {
"path": "xx/download"
}
}
}
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。