我是ES的新手。我创建了一个索引:
PUT test
{
"mappings": {
"logEvent":{
"dynamic": "false",
"properties": {
"hostName":{
"type": "keyword"
},
"message":{
"type": "text"
}
"timeStamp":{
type:"date"
}
}
}
}
}
我插了一行
"User:x;level:x1; loged in
然后我尝试运行查询:
GET test/logEvent/_search
{
"query":{
"wildcard":{
"message": "User:*;level:x1; loged in"
}
}
}
我从查询中得不到任何回报。我在这里做错了什么?
答案 0 :(得分:1)
通配符查询只能用于未分析字段。您需要更改映射,以便消息是多字段,包括文本和关键字:
{
"mappings": {
"logEvent": {
"dynamic": "false",
"properties": {
"hostName": {
"type": "keyword"
},
"message": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"timeStamp": {
"type": "date"
}
}
}
}
}
然后查询:
{
"query": {
"wildcard": {
"message.keyword": "User:*;level:x1; loged in"
}
}
}
在映射中,将ignore_above
设置为邮件的最大长度