当前位置: 首页 > 面试题库 >

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

华宇
2023-03-14
问题内容

我在Elasticsearch中有一个带有value的字段"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":{}}

结果:

"error": "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures

{"query":{"bool":{"must":[{"query_string":{"default_field":"fluentd.message","query":"cgn\:"}}],"must_not":[],"should":[]}},"from":0,"size":10,"sort":[],"facets":{}}

结果:

JSON.parse: bad escaped character at line 1 column 91 of the JSON data

你能帮我吗?


问题答案:

尝试以下查询,看看它是否适合您:

{
   "query": {
      "bool": {
         "must": [
            {
               "query_string": {
                  "default_field": "fluentd.message",
                  "query": "cgn\\:4189"
               }
            }
         ],
         "must_not": [],
         "should": []
      }
   },
   "from": 0,
   "size": 10,
   "sort": [],
   "facets": {}
}

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

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

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



 类似资料:
  • 问题内容: 我只是从ElasticSearch开始,然后尝试基于它来实现自动完成功能。 我有一个带有type 字段的索引。这是存储在该索引中的文档的示例: 分析配置如下所示: 映射: 我将以下查询发送到ES: 结果,我得到以下信息: 在大多数情况下,它是有效的。在用户必须实际键入整个单词之前,它确实找到了带有的文档(足够了)。 这就是我的问题。我也希望它返回。要获取,我需要发送以下查询: 注意那里

  • 问题内容: 我有两个具有以下映射的索引(我将简化它们的映射): 1)AccountType映射: 2)ProductType映射: 现在,我有几件事需要弄清楚: 1)首先,有一个索引是一个好主意,在我的情况下是帐户,并且产品是嵌套对象,但是在这里每次我要更新/添加新产品时,我都必须重新索引(更新)整个帐户文件? 2)我的第二个问题是:我想具有搜索功能,因此,如果用户通过在文本框中键入内容进行搜索,

  • 我正在尝试使用NEST c#客户端搜索我的弹性搜索嵌套对象。我的索引名称是”,我的”字段。 这是我的班级: 现在我的web应用程序看起来像这样: 这里是我需要搜索的单词。 我在浏览器的搜索框(网络表单)中输入它。 搜索关键字可能包含任何需要与我的表人员中的任何字段的值匹配。 如果搜索关键字与嵌套文档匹配,则应返回确切的嵌套文档。 我不知道我的嵌套查询有问题,或者我实际上不知道如何使用嵌套查询来执行

  • 问题内容: 我在Elasticsearch中放了2个文档: 为什么此查询返回2个文档: 而这个,只有第二个文件: 我想elasticsearch以匹配我传递给查询参数的确切词组(带空格),该怎么做? 问题答案: 您需要查看的是正在使用的分析仪。如果您未指定,Elasticsearch将使用标准分析器。在大多数使用纯文本输入的情况下,它非常有用,但不适用于您提到的用例。 标准分析器将执行的操作是将字

  • 我使用logstash将我的mysql表数据保存到elasticsearch中。现在我想使用特定字段从elasticsearch获取数据。我可以使用id获取数据,但无法使用其他字段检索数据。 我正在使用elasticsearch 5.6.12和Spring boot 2.0 searchcontroller.java 我想用first_name搜索,但什么都没有显示。我在这里做错了什么?

  • 我正在使用Nest连接到ElasticSearch并执行一些查询。到目前为止,在给定一个通配符查询的情况下,我能够得到我想要的结果,如下所示: 但是现在我需要为某个用例的查询添加附加条件。 我需要的不仅是通过查询,还需要其他两个匹配的字段: 搜索术语"*" field 1="一些字符串" field="一些指南" 我确信在弹性搜索中一定有办法做到这一点(使用Nest),但我还没有找到它。 我知道我