Elasticsearch 通配符 VS 查询字符串

Elasticsearch wildcard VS querystring

我在 Elasticsearch 中找到了 2 种 Like-Search 方法。我应该选择哪一个?他们似乎有相同的行为。或者还有更好的吗?

query_string:

"query": {
"bool": {
  "filter": [
    {
      "query_string": {
        "query": "*quick*",
        "fields": [
          "text"
        ]
      }
    }
  ]
}
}

通配符:

"query": {
"bool": {
    "must": [
        {
            "wildcard": {
                "text": "*quick*"
            }
        }
    ]
}
}

SQL 将是 WHERE text like '%quick%'

我认为,不同之处在于,在过滤器查询中没有计算分数。在文档中: 在过滤器上下文中,查询子句回答了“此文档是否与此查询子句匹配?”的问题。答案是简单的是或否 — 不计算分数。

所以我会使用通配符查询。在那里你可以使用 * 来表示更多的字符和 ?只有一个角色 - 取决于您的需要。在这里,计算分数。