Elasticsearch中一次查询中使用多个通配符

9
curl localhost:9200/tweet/posts/_search -d '{
  "query": {
    "and": [
      {
        "wildcard": {
          "_all": "*pet*"
        }
      },
      {
        "wildcard": {
          "_all": "*rom*"
        }
      }
    ]
  }
}'

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

2个回答

16

也许可以像这样吗?

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

如果我需要在选定的字段上运行相同的查询而不是_all,那么该怎么办呢?我只需要在这些字段上运行搜索["name","address","contact","zip"]。请帮帮我。 - user2742004
2
我认为你需要将“必须”更改为“应该”,然后每个字段添加一个通配符。至少一个“应该”需要匹配一条记录才能返回(如果没有必填条件)。 - Alcanzar

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接