_search弹性搜索中的CJK术语

时间:2016-06-16 02:48:19

标签: elasticsearch

elasticsearch不支持在url中查询cjk字符吗? 我需要在索引(old_merge_result)中查询术语北京(中文北京)中的字段(名称)。以下查询似乎无效。 ES会回归

GET / old_merge_result / tempid / _search?q = name:北京

ES会回来:

{
   "statusCode": 400,
   "error": "Bad Request",
   "message": "child \"uri\" fails because [\"uri\" must be a valid uri]",
   "validation": {
      "source": "query",
      "keys": [
         "uri"
      ]
   }
}

相反,通过以下查询将完全返回我想要的内容。

GET /old_merge_result/tempid/_search
{
  "query": {
    "term": {
      "name": {
        "value": "北京"
      }
    }
  }
}

那么有没有办法通过url查询,如old_merge_result / tempid / _search?q = name:北京?

1 个答案:

答案 0 :(得分:1)

需要使用percent-encoding/URL-encoding将cjk字符作为查询参数传递

对于上面的例子,它将是:

GET /old_merge_result/tempid/_search?q=name:%E5%8C%97%E4%BA%AC