在弹性搜索中进行搜索查询时如何忽略双斜杠?

How to ignore double slashes while making a search query in elastic search?

比如elasticsearch文档中,字符串存储为\\(\\log_4(3x^2+11x)=1\\) 我想让它起作用的搜索查询是 (log_4(3x^2+11x)=1).

完成这项工作的最佳方法是什么?

您可以使用 pattern_replace char filter,它可以将 \ 替换为 empty string,下面是工作示例。

使用 pattern_replace 字符过滤器的自定义分析器的索引设置

{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_analyzer": {
                    "filter": [
                        "lowercase"
                    ],
                    "char_filter": [
                        "my_char_filter"
                    ],
                    "type": "custom",
                    "tokenizer": "whitespace"
                }
            },
            "char_filter": {
                "my_char_filter": {
                    "type": "pattern_replace",
                    "pattern": "\\(.*?)",
                    "replacement": ""
                }
            }
        }
    }
}

分析API

{
    "analyzer": "my_analyzer",
    "text": "\(\log_4(3x^2+11x)=1\)"
}

生成的令牌

{
    "tokens": [
        {
            "token": "(log_4(3x^2+11x)=1)",
            "start_offset": 1,
            "end_offset": 22,
            "type": "word",
            "position": 0
        }
    ]
}