elasticsearch:无法搜索@符号

时间:2017-08-25 08:37:22

标签: elasticsearch tokenize

我们的映射如下所示:

mappings: {
    entry: {
        properties: {
            id: { type: 'string' },
            name: { type: 'string' },
            creationTimestamp: { type: 'date', format: 'date_time' },
            lastTimestamp: { type: 'date', format: 'date_time' }
        }
    }
}

有些文档在名称中包含@符号,例如“@ TITLE @ _30”。但是,我无法搜索@符号。搜索name:*title*name:*_30*工作正常,但在尝试name:*@title*时,我没有收到任何结果。

我必须使用哪种标记器才能实现这一点?我们的最终用户想要做的只是使用通配符进行不区分大小写的搜索。

修改

查询如下所示:

query: {
    filtered: {
        filter: {
            bool: {
                must: [{
                    range: {
                        creationTimestamp: {
                            gte: startdate.toISOString(),
                            lte: enddate.toISOString()
                        }
                    },
                    query: {
                        query_string: {
                            query: 'name:*title*' // e.g
                        }
                    }
                }]
            }
        }
    }
}

P.S。我们使用es v1.7

编辑2 尝试了How to modify standard analyzer to include #?中的两个选项,但它们对我不起作用。

还尝试了以下内容:

settings: {
    analysis: {
        analyzer: {
            name_analyzer: {
                type: 'custom',
                tokenizer: 'whitespace',
                filter: ['test']
            }
        },
        filter: {
            test: {
                type: 'word_delimiter',
                preserve_original: true,
                type_table: ['@ => ALPHANUM']
            }
        }
    }
}

但这只会获得name:*@*的结果,而其他任何查询都不起作用

0 个答案:

没有答案