elasticsearch 使用附加引号形成弹性搜索查询,elasticsearch,kibana,elastic-stack,elasticsearch,Kibana,Elastic Stack" /> elasticsearch 使用附加引号形成弹性搜索查询,elasticsearch,kibana,elastic-stack,elasticsearch,Kibana,Elastic Stack" />

elasticsearch 使用附加引号形成弹性搜索查询

elasticsearch 使用附加引号形成弹性搜索查询,elasticsearch,kibana,elastic-stack,elasticsearch,Kibana,Elastic Stack,我试图通过Elasticsearch的查询字符串模拟Kibana的搜索查询。例如,在Kibana,我可以用引号进行如下搜索: "ABC" AND "CDE" 当我尝试创建此查询字符串时,它会抛出一个语法错误: { "query": { "query_string": { "fields": ["messages"] "query": ""

我试图通过Elasticsearch的查询字符串模拟Kibana的搜索查询。例如,在Kibana,我可以用引号进行如下搜索:

"ABC" AND "CDE"
当我尝试创建此查询字符串时,它会抛出一个语法错误:

{
"query": {
"query_string": {
"fields": ["messages"]
"query": ""ABC" AND "CDE"" (syntax error occurs here)
}
}
}

我知道我可以不用额外的引号来查询它,但我需要将用户的输入附加到查询字符串中,该字符串将包含这些额外的引号。如何形成此查询以便它可以接受引号?

您可以在查询字段中转义引号

{
  "query": {
    "query_string": {
      "fields": ["messages"],
      "query": "\"ABC\" AND \"CDE\""
    }
  }
}
或者将查询值用三个引号括起来

{
  "query": {
    "query_string": {
      "fields": ["messages"],
      "query": """
        "ABC" AND "CDE"
      """
    }
  }
}

(您的示例中字段和查询字段之间也缺少逗号)

您可以在查询字段中转义引号

{
  "query": {
    "query_string": {
      "fields": ["messages"],
      "query": "\"ABC\" AND \"CDE\""
    }
  }
}
或者将查询值用三个引号括起来

{
  "query": {
    "query_string": {
      "fields": ["messages"],
      "query": """
        "ABC" AND "CDE"
      """
    }
  }
}

(您的示例在字段和查询字段之间也缺少逗号)

您应该能够转义引号:

GET index-2021.02.21/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "message": "\\"ABC\\""
          }
        }
      ]
    }
  }
}

您应该能够避开以下引用:

GET index-2021.02.21/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "message": "\\"ABC\\""
          }
        }
      ]
    }
  }
}

上面的查询在Kibana的控制台上工作,但在JS中却无法正常工作。这是我在js:{“query”:{“query_string”:{“fields”:[“messages”],“query”:“+”、“+”、“+”\n'+“ABC”和“CDE”+“\n'+”、“+”}}}}中的查询。点击次数与我在Kibana得到的oone不一样。我做错了什么?上面的查询在Kibana的控制台上工作,但在JS中却无法正常工作。这是我在js:{“query”:{“query_string”:{“fields”:[“messages”],“query”:“+”、“+”、“+”\n'+“ABC”和“CDE”+“\n'+”、“+”}}}}中的查询。点击次数与我在Kibana得到的oone不一样。我做错了什么?