问题描述
我正在 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"
}
}
}
]