在索引数据中,我有一些文档具有这样的值-
“排除y:\ dkj .... \ sdfisd \ sdfsdf \ asdfai”
我的要求是根据“\ .... \”搜索所有具有此类条目的文档。所以为此,我使用“regexp”。
目前,我为此使用了以下正则表达式,但对我而言却没有奏效-
以下是我向Elasticsearch提出的查询部分。
"bool" : {
"must" : [ {
"query_string" : {
"query" : "\"DC2\"",
"default_field" : "COLLECTOR_NAME"
}
}, {
"regexp" : {
"RAW_EVENT_DATA" : {
"value" : ".*?[\\.]{4}.*",
"flags_value" : 0
}
}
} ]
}
请提供一些建议。
最佳答案
通常与分析仪有关
让我们使用以下映射创建类型
{
"my_index": {
"mappings": {
"test": {
"properties": {
"title": {
"type": "string"
},
"title_raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
新增文件
POST my_index/test/1
{
"title":"exclude y:\\dkj....\\sdfisd\\sdfsdf\\asdfai",
"title_raw":"exclude y:\\dkj....\\sdfisd\\sdfsdf\\asdfai"
}
现在搜寻
POST my_index/test/_search
{
"query": {
"regexp" : {
"title" : {
"value" : ".*?[\\.]{4}.*",
"flags_value" : 0
}
}
}
返回空结果
但没有经过分析的 Realm 可以与regexp完美配合
POST my_index/test/_search
{
"query": {
"regexp" : {
"title_raw" : {
"value" : ".*?[\\.]{4}.*",
"flags_value" : 0
}
}
}
您可以检查documentation以了解其发生原因。由于您使用的是标准分析仪,部分信息会在索引编制阶段丢失,并且在搜索过程中不可用。
关于regex - 如何在Elasticsearch中使用正则表达式搜索 “\…\”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38724017/