【发布时间】:2019-12-26 21:27:49
【问题描述】:
我有 7.5.0 ELK 堆栈。并且看到很奇怪的情况。我有“消息”字段的索引,例如其中的这一行:
[comgId:1773182151883136235;expired:false;delivered:true;secured:false;querySecured:true]
当我查询“消息:1773182151883136235”时,它什么也没找到(来自 Kibana 的发现页面)
但如果我在搜索栏下添加过滤器“消息为 1773182151883136235”:
{
"query": {
"match": {
"message": {
"query": "1773182151883136235",
"type": "phrase"
}
}
}
}
elastic 找到那个字符串。为什么???
当检查两个查询时,我看到在“查询”->“布尔”->“过滤器”中传递的搜索参数:数组。 但是当我在搜索栏中查询时 - /index/_search 请求有:
"bool": {
"should": [
{
"match": {
"message": 1773182151883136300
}
}
],
"minimum_should_match": 1
}
什么也没找到,但添加了过滤器 - /index/_search 请求有:
{
"match_phrase": {
"message": {
"query": "1773182151883136235"
}
}
},
搜索成功
为了方便用户在熟悉的搜索栏中编写搜索查询,而不是创建过滤器。为什么会发生这种情况 - 这是错误还是正常行为?
【问题讨论】:
-
请分享您的映射
-
这里是消息字段的映射:
"message": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } },
标签: elasticsearch kibana