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

在Elasticsearch中使用特殊字符搜索

纪俊良
2023-03-14
问题内容

我无法在Elasticsearch中以特殊字符结尾/开头的字符进行搜索。就像“ 123456!”

{
 "query": {
    "query_string": {
        "default_field": "password",
        "query": "123456!"
    }
 }
}

我的映射是

{
  "mappings": {
    "passwords": { 
      "properties": {
        "date":    { "type": "date"}, 
        "password":    { "type": "string","index": "not_analyzed"},

      }
    }
  }
}

它给我错误,我可以在搜索查询(或映射)中做什么,以便特殊字符将被视为搜索字符串的一部分?


问题答案:

由于您的password字段是not_analyzed(好!),请尝试123456!用双引号引起来进行完全匹配:

{
 "query": {
    "query_string": {
        "default_field": "password",
        "query": "\"123456!\""
    }
 }
}

这样做的另一种方法是keywordquery_string查询中设置分析器(但请务必转义,!因为它是保留字符(对于NOT操作员)

{
 "query": {
    "query_string": {
        "default_field": "password",
        "query": "123456\!",
        "analyzer": "keyword"
    }
 }
}


 类似资料:
  • 我有一个问题与搜索的特殊字符在solr。我的文档有一个字段标题,有时它可以像泰坦尼克号-1999(它有字符-)。当我试图搜索索尔与"-"我收到一个400错误。我试图逃避这个角色,所以我尝试了像“-”和“\-”这样的东西。有了这些变化,solr不会用错误来回应我,但它会返回0个结果。 如何在solr admin中搜索具有该特殊字符(如“-”或“”?)的内容??? 问候 在这里更新您可以看到我当前的s

  • 要转义这些字符,请在字符前面使用\。例如,要搜索(1+1):2,请使用以下查询: 为此,我使用方法: 我使用经典分析器是因为我注意到标准分析器在转义特殊字符方面存在一些问题。 null

  • 在Lucene.NET 3.0.3.0的通配符搜索中,我已经寻找了很长时间来转义特殊字符,如#,{,,[,],...,但我找不到任何可能的解决方案。 我使用StandardAnalyzer索引了我文档。字段“title”有属性field.store.yes和field.index.analysis。 搜索时,我为我的SearchTerm调用了MultiFieldQueryParser.Escape

  • 我刚开始使用hibernate lucene搜索。从几天以来,我一直致力于搜索关键字与特殊字符。我正在使用MultiFieldQueryParser进行精确短语匹配以及布尔搜索。但在这个过程中,我无法得到搜索关键字的结果,如“有1年以上的经验”,如果我没有在搜索关键字周围添加任何引号,那么我就得到了结果。所以我在执行lucene查询时观察到的是,它正在转义特殊符号(+)。我正在使用Standard

  • 问题内容: 我的应用程序正在使用这样的NSURL: 当我试图做一个从这个NSURL获取数据的任务时,如下所示: 但是尝试从该地址获取数据时出现错误,尽管当我使用野生动物园去链接时:“ http://www.geonames.org/search.html?q =Aïn+Béïda+ Algeria&country =“我可以看到数据。我该如何解决? 问题答案: 迅捷2 编码的URL现在是: “ h

  • 当我搜索“#”等特殊字符时,没有结果出现。 请注意,我已经转义了查询字符串。 然而,当与“c#”这样的字母组合时,Lucene找到了这个词。 有没有办法搜索单个特殊字符? 这是我的片段: