elasticsearch 发现页面-can’;无法在搜索栏中找到,但可以在筛选器中找到,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch 发现页面-can’;无法在搜索栏中找到,但可以在筛选器中找到,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch 发现页面-can’;无法在搜索栏中找到,但可以在筛选器中找到

elasticsearch 发现页面-can’;无法在搜索栏中找到,但可以在筛选器中找到,elasticsearch,kibana,elasticsearch,Kibana,我有7.5.0麋鹿堆栈。看到非常奇怪的情况。我有带有“消息”字段的索引,例如,其中的这一行: [comgId:1773182151883136235;expired:false;delivered:true;secured:false;querySecured:true] 当我查询“message:1773182151883136235”时,它什么也找不到(从Kibana的发现页面) 但如果我在搜索栏“message is 1773182151883136235”下添加过滤器: 橡皮筋找到了那

我有7.5.0麋鹿堆栈。看到非常奇怪的情况。我有带有“消息”字段的索引,例如,其中的这一行:

[comgId:1773182151883136235;expired:false;delivered:true;secured:false;querySecured:true]
当我查询“message:1773182151883136235”时,它什么也找不到(从Kibana的发现页面)

但如果我在搜索栏“message is 1773182151883136235”下添加过滤器:

橡皮筋找到了那根绳子。为什么

当检查这两个查询时,我看到搜索参数在“query”->“bool”->“filter”:数组中传递。 但当我在搜索栏中进行查询时-/index/\u搜索请求有:

  "bool": {
    "should": [
      {
        "match": {
          "message": 1773182151883136300
        }
      }
    ],
    "minimum_should_match": 1
  }
并且什么也找不到,但添加了过滤器-/index/\u后,搜索请求具有:

{
  "match_phrase": {
    "message": {
      "query": "1773182151883136235"
    }
  }
},
搜索成功

为了让用户更方便地在熟悉的搜索栏中编写搜索查询,请改为创建过滤器。为什么会发生这种情况-这是错误还是正常行为

  • 您的示例文档中没有
    message
    字段,我假设我们讨论的是
    comgId
  • 新的Kibana查询语言(KQL)对数据类型有点挑剔。搜索
    comgId:1773182151883136235
    找不到任何内容,但将其更改为
    comgId:1773182151883136235
    (请注意双引号)会按预期工作

  • PS:切换到带双引号和不带双引号的Lucene查询语法都有效。

    请共享您的映射Shere正在映射消息字段:
    “message”:{“type”:“text”,“fields”:{“keyword”:{“type”:“keyword”,“忽略上面的“:256}},
    1。我有一个类型为“text”的“message”字段,该字段有字符串“[comgId:1773182151883136235;过期:……”,因此该字符串由标记“comgId”、“1773182151883136235”、“expited”拆分,…2.是的,你是对的,双引号有帮助,一切都如预期的那样。你能告诉我在哪里可以更详细地了解这种行为吗?我不确定这些文档是否完美,但可能是最好的起点;它有一个关于短语的引号字符串的部分,但实际上并不是不同数据类型的处理。
    {
      "match_phrase": {
        "message": {
          "query": "1773182151883136235"
        }
      }
    },