【问题标题】:Elastic Search query without wildcard asterisk不带通配符星号的 Elastic Search 查询
【发布时间】:2018-09-14 12:37:38
【问题描述】:

我有一个与 ElasticSearch 相关的问题。 我有一个标题为“MS-PS_3.2”的文档 当我只搜索“MS”时,它会根据查询返回文档

:query=>"*MS\\-PS_3.2*"
当我输入完整的文档标题时,它不会返回结果。查询如下所示:
:query=>"*MS\\-PS_3.2*"
但是,当我删除通配符时,它会返回文档
:query=>"MS\\-PS_3.2"

我的完整查询如下所示:

 {:query=>{:bool=>{:must=>[{:query_string=>{:query=>"*MS\\-PS_3.2*"}}, {:terms=>{:bank_id=>[4]}}]}}, :size=>10000}

我的查询中有什么需要更改的吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    当您将查询用作请求参数的一部分时,请尝试使用:query=>\*MS\\-PS_3.28\*。 当我使用请求正文搜索时,它似乎对我有用,但是你想尝试使用 "query" : "\\*MS\\-PS_3.2\\*" 吗?

    【讨论】:

    • 我为什么要转义通配符?
    • 与您在“-”之前添加“\\”的原因相同
    • 它有效,但对我来说没有意义,为什么我需要转义通配符 *。如果字符串包含 * 那么我可以看到转义
    • 我猜原因是因为您的文本中有一个保留字符(“-”)。更多详情请见here
    猜你喜欢
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 2021-02-20
    相关资源
    最近更新 更多