【问题标题】:Exact Match Elasticsearch with Standard Tokenizer使用标准分词器精确匹配 Elasticsearch
【发布时间】:2020-02-21 14:50:13
【问题描述】:
我有一个带有标准标记器的字段,插入的文档如下:
1
{
name : Hello World
}
2
{
name : Hello World Welcome
}
3
{
name : Hello World Welcome to the World
}
如何查询“Hello World”并返回所有带有“Hello World”一词的文档,并且第一个与“Hello World”完全匹配的文档将比其他文档得分更高
【问题讨论】:
标签:
elasticsearch
elasticsearch-query
【解决方案1】:
您可以像这样非常简单地实现它:
POST test/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "Hello World"
}
}
],
"should": [
{
"match_phrase": {
"name": "Hello World"
}
}
]
}
}
}
第一个 match 约束将匹配所有三个文档,should/match_phrase 约束将提升第一个文档,即它会获得比其他两个文档略高的分数。