Elasticsearch通配符VS查询字符串

时间:2017-11-23 07:22:28

标签: elasticsearch sql-like

我在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%'

1 个答案:

答案 0 :(得分:1)

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

所以我会使用通配符查询。在那里你可以使用*来获得更多的角色和?仅限一个角色 - 视您的需要而定。在这里,计算分数。