【问题标题】:How to match elastic search query partial match multiple query?如何匹配弹性搜索查询部分匹配多个查询?
【发布时间】:2020-11-09 06:52:28
【问题描述】:

我的 DSL 查询如下

GET index_name/_search
{
"query" : {
    "query_string" : {
      "query" : "*avi*",
      "fields" : [
        "data.name"
      ]
    }}}

我还需要添加"query" : "*ojh*"

以下查询无效

GET index_name/_search
{
"query" : {
    "query_string" : {
      "query" : "*avi*",
      "query" : "*ojh*",
      "fields" : [
        "data.name"
      ]
    }}}

【问题讨论】:

    标签: elasticsearch dsl


    【解决方案1】:

    您需要利用bool/should 查询并添加两个query_string 查询:

    {
      "query": {
        "bool": {
          "should": [
            {
              "query_string": {
                "query": "*avi*",
                "fields": [
                  "data.name"
                ]
              }
            },
            {
              "query_string": {
                "query": "*ojh*",
                "fields": [
                  "data.name"
                ]
              }
            }
          ]
        }
      }
    }
    

    不过请注意,执行这样的中缀搜索会降低集群的性能。请参阅this thread,了解如何正确进行“子字符串”搜索。

    【讨论】:

    • 如果我需要添加 3 then 条件然后我需要添加一个条件? { "query_string": { "query": "*mak*", "fields": [ "data.name" ] }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 2020-11-20
    • 2014-06-02
    • 2020-11-10
    • 2019-02-01
    • 1970-01-01
    相关资源
    最近更新 更多