我在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%'
答案 0 :(得分:1)
我认为,区别在于,在过滤查询中没有计算得分。在文档中: 在过滤器上下文中,查询子句回答问题“此文档是否与此查询子句匹配?”答案是简单的是或否 - 不计算分数。
所以我会使用通配符查询。在那里你可以使用*来获得更多的角色和?仅限一个角色 - 视您的需要而定。在这里,计算分数。