如何在elasticsearch中使用冒号搜索模式?

gui*_*eek 4 elasticsearch

我在Elasticsearch中有一个带有值的字段"ft:05/08/2015 13:01:27.358,cgn:4189".当我想用查询字符串"cgn:4189"搜索时,我没有结果.我尝试像"cgn:4189"一样逃脱冒号,但我有语法错误.我不知道该怎么做.

{"query":{"bool":{"must":[{"query_string":{"default_field":"fluentd.message","query":"cgn:"}}],"must_not":[],"should":[]}},"from":0,"size":10,"sort":[],"facets":{}}
Run Code Online (Sandbox Code Playgroud)

结果:

"error": "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures
Run Code Online (Sandbox Code Playgroud)

{"query":{"bool":{"must":[{"query_string":{"default_field":"fluentd.message","query":"cgn\:"}}],"must_not":[],"should":[]}},"from":0,"size":10,"sort":[],"facets":{}}
Run Code Online (Sandbox Code Playgroud)

结果:

JSON.parse: bad escaped character at line 1 column 91 of the JSON data
Run Code Online (Sandbox Code Playgroud)

你能帮我吗?

Slo*_*ens 6

试试这个查询,看看它是否适合你:

{
   "query": {
      "bool": {
         "must": [
            {
               "query_string": {
                  "default_field": "fluentd.message",
                  "query": "cgn\\:4189"
               }
            }
         ],
         "must_not": [],
         "should": []
      }
   },
   "from": 0,
   "size": 10,
   "sort": [],
   "facets": {}
}
Run Code Online (Sandbox Code Playgroud)

这是我用来测试它的一些Sense代码:

http://sense.qbox.io/gist/1c90964da37d3dfec47d76288885db5793f38415

如果这对您不起作用,那么它可能与您的映射和/或分析设置有关.因此,如果你可以在你的问题中发布您的映射,包括任何自定义分析器,它将有所帮助.此外,正确格式化代码块会使它们更容易阅读.


小智 5

参考弹性搜索文档,您可以这样在查询中添加转义的双引号:

{
  "query": {
    "query_string" : {
      "query": "ip_addr:\"2001:db8::/48\""
    }
  }
}
Run Code Online (Sandbox Code Playgroud)