【问题标题】:Multiple wildcards in one query in elasticsearchelasticsearch中的一个查询中的多个通配符
【发布时间】:2014-05-15 14:40:01
【问题描述】:
curl localhost:9200/tweet/posts/_search -d '{
  "query": {
    "and": [
      {
        "wildcard": {
          "_all": "*pet*"
        }
      },
      {
        "wildcard": {
          "_all": "*rom*"
        }
      }
    ]
  }
}'

这给了我一个解析异常。我想运行一个带有 AND 条件的 MySQL like(%test%) 类型查询。在elasticsearch中还有其他好方法吗?

【问题讨论】:

    标签: curl elasticsearch parseexception


    【解决方案1】:

    也许是这样的?

    {
      "query": {
        "bool": {
          "must": [
            {
              "wildcard": {
                "_all": {
                  "value": "*pet*"
                }
              }
            },
            {
              "wildcard": {
                "_all": {
                  "value": "*rom*"
                }
              }
            }
          ]
        }
      }
    }
    

    【讨论】:

    • 如果我必须对选定字段而不是 _all 运行相同的查询,那么我该怎么做。我只需要在这些字段上运行搜索 ["name","address","contact","zip"]。请帮帮我。
    • 我相信您需要将“必须”更改为“应该”,然后为每个字段添加一个通配符。至少有一个“应该”需要匹配一条记录才能返回(如果您没有 must 子句)。
    【解决方案2】:

    dis_max 查询可以支持通配符查询而不是布尔值。 请看这里: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-dis-max-query.html 我会这样写:

    {
     "query": {
         "dis_max": {
             "queries": [
                   {"wildcard": {
                     "_all": {"value" : "*pet*"}
                   }},
                   {"wildcard": {
                     "_all": {"value" : "*rom*"}
                   }}
               ]
         }
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多