代码之家  ›  专栏  ›  技术社区  ›  Toshi

Elasticsearch通配符与querystring

  •  2
  • Toshi  · 技术社区  · 7 年前

    我找到了两种方法 喜欢搜索 在Elasticsearch中。我该选哪一个?他们似乎有同样的行为。或者还有更好的吗?

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

    通配符:

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

    SQL将是 WHERE text like '%quick%'

    1 回复  |  直到 7 年前
        1
  •  2
  •   Ohlsen1980    7 年前

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

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