我想在ElasticSearch上构建搜索,但我对此感到困惑:
查询:
需要查找具有此变量值的文档:
如何处理?
答案 0 :(得分:0)
您应该使用Pattern Replace Char Filter并将其附加到您的分析仪上。
例如,这将是最小化的再现:
POST /hm
{
"index": {
"analysis": {
"char_filter": {
"my_pattern": {
"type": "pattern_replace",
"pattern": "(\\s+)?&(\\s+)?|(\\s+)?and(\\s+)?",
"replacement": "and"
}
},
"analyzer": {
"custom_with_char_filter": {
"tokenizer": "standard",
"char_filter": [
"my_pattern"
]
}
}
}
}
}
它会将&
,and
替换为and
周围的可选多个空格。现在,您可以通过运行以下语句来检查此分析器的工作原理:
GET /hm/_analyze?analyzer=custom_with_char_filter&text=h%26m
GET /hm/_analyze?analyzer=custom_with_char_filter&text=h %26 m
GET /hm/_analyze?analyzer=custom_with_char_filter&text=handm
所有这些都带来了同样的信号:
{
"tokens": [
{
"token": "handm",
"start_offset": 0,
"end_offset": 5,
"type": "<ALPHANUM>",
"position": 1
}
]
}
这意味着无论何时您正在搜索其中任何一项:
它会带来相同的结果。