Elasticsearch可以实现精确匹配和模糊匹配是因为其具有强大的搜索和查询功能。其中,精确匹配使用精确匹配查询,而模糊匹配则使用模糊匹配查询。
在 Elasticsearch 中,精确匹配通常使用“term”查询来实现。例如,假设我们要搜索一个名为“John Smith”的人,我们可以在 Elasticsearch 中使用以下查询:
GET /persons/_search
{
"query": {
"term": {
"name": "John Smith"
}
}
}
这将返回所有名称为“John Smith”的人。
而对于模糊匹配,则可以使用Elasticsearch中的“fuzzy”查询。该查询可以找到与给定术语相似但不完全相同的文档。例如:
GET /persons/_search
{
"query": {
"fuzzy": {
"name": {
"value": "Jhon Smit",
"fuzziness": 2
}
}
}
}
此查询将搜索包含名称类似于“Jhon Smit”的人,因为我们允许最多两个字符的不匹配(即模糊度)。
综上所述,Elasticsearch可以实现精确匹配和模糊匹配,并且通过“term”查询和“fuzzy”查询进行实现,可以根据具体需要进行适当调整。