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%'
我认为,不同之处在于,在过滤器查询中没有计算分数。在文档中:
在过滤器上下文中,查询子句回答了“此文档是否与此查询子句匹配?”的问题。答案是简单的是或否 — 不计算分数。
所以我会使用通配符查询。在那里你可以使用 * 来表示更多的字符和 ?只有一个角色 - 取决于您的需要。在这里,计算分数。
我在 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%'
我认为,不同之处在于,在过滤器查询中没有计算分数。在文档中: 在过滤器上下文中,查询子句回答了“此文档是否与此查询子句匹配?”的问题。答案是简单的是或否 — 不计算分数。
所以我会使用通配符查询。在那里你可以使用 * 来表示更多的字符和 ?只有一个角色 - 取决于您的需要。在这里,计算分数。