我有7.5.0 ELK堆栈。并看到非常奇怪的情况。我有“邮件”字段的索引,例如其中的这一行:
[comgId:1773182151883136235;expired:false;delivered:true;secured:false;querySecured:true]
当我查询“ message:1773182151883136235”时,它什么也没找到(来自Kibana的Discovery页面)
但是如果我在搜索栏“ message is 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"
}
}
},
搜索成功
为了使用户更方便地在熟悉的搜索栏中编写搜索查询,而无需创建过滤器。为什么会发生-这是错误还是正常行为?
答案 0 :(得分:1)
message
字段,我假设我们正在谈论comgId
。comgId: 1773182151883136235
找不到任何内容,但是将其更改为comgId: "1773182151883136235"
(请注意双引号)可以正常工作。PS:切换到带双引号和不带双引号的Lucene查询语法都可以。