elasticsearch查询中的转义特殊字符



我的问题很简单,我不能在搜索查询中使用@。最后,我发现可以使用反斜杠转义特殊字符。

GET index/_search
{
  "size": 20,
  "query": {
    "query_string": {
      "query": "@as",
      "analyzer": "keyword"
    }
  }
}

但是当我尝试这样做时,我得到了以下错误Unrecognized character escape '@' (code 64)n at。当我尝试不带@符号时,我得到了没有@符号的结果,比如

  1. 一如既往的错过
  2. 。GUI
  3. 如果
  4. 等等......有谁能建议我如何才能实现以前的查询可以按照我的期望执行吗?

我使用

  • Elasticsearch 2.4.1
  • Ubuntu 14.04
  • Kibana 4.6.1

出现错误是因为不需要转义'@'字符。
"query": "@as" 应该可以工作。
您也应该检查您的映射,如果您的字段没有标记为not_analyzed(或没有keyword分析器),您将看不到任何搜索结果-标准分析器在索引文档时删除'@'等字符。
更新
query_string默认使用_all字段,因此您必须以类似于以下示例的方式配置该字段:

PUT index 
{
   "mappings":{
      "book":{
         "_all":{
            "type":"string",
            "index":"analyzed",
            "analyzer":"whitespace"
         },
         "properties":{
            "name":{
               "type":"string",
               "index":"not_analyzed"
            }
         }
      }
   }
}
PUT /index/book/1
{
"name" : "@foo bar"
}
GET index/_search
{
  "size": 20,
  "query": {
    "query_string": {
      "query": "@foo",
      "analyzer": "keyword"
    }
  }
}

相关内容

  • 没有找到相关文章

最新更新