弹性搜索查询等于双点

时间:2018-01-09 11:36:20

标签: elasticsearch

之间有什么区别

“query”: “osversion=android”“query”: “osversion:android”

我无法找到:=的解释。

我得到了不同的结果。我们已经将Kibana从4.x更新到5.x并重新编制了索引。 在更新之前,我使用了:,现在更新后我没有得到结果,我必须使用=来获取结果。

查询:

{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "analyze_wildcard": true,
            "query": "product:PRODUCTNAME"
          }
        },
        {
          "range": {
            "log_timestamp": {
              "gte": 1512909497485,
              "lte": 1515501497485,
              "format": "epoch_millis"
            }
          }
        }
      ],
      "must_not": []
    }
  },
  "size": 0,
  "_source": {
    "excludes": []
  },
  "aggs": {
    "3": {
      "filters": {
        "filters": {
          "IOS": {
            "query_string": {
              "query": "osversion:ios",
              "analyze_wildcard": true
            }
          },
          "Android": {
            "query_string": {
              "query": "osversion:android",
              "analyze_wildcard": true
            }
          }
        }
      },
      "aggs": {
        "1": {
          "cardinality": {
            "field": "uuid",
            "precision_threshold": 1000
          }
        }
      }
    }
  }
}

映射:

   "osversion": {
      "index": "not_analyzed",
      "type": "keyword",
      "doc_values": true
    },

1 个答案:

答案 0 :(得分:0)

您在Kibana搜索栏中输入的内容需要符合query_string query syntax,即您的查询唯一正确的方法是使用:,如

osversion:android

将检索osversion个字段与android匹配的所有文档。

相反,如果您输入

osversion=android

然后标准分析器启动并且查询将搜索在任何分析字段中具有osversionandroid的所有文档,这是完全不同的。