我有一个包含字段标题的索引,其数据如下。
因此,如果用户搜索 jam ,我不希望 jamun 和 jamaica country 也出现在搜索结果中。现在,我在Elasticsearch中使用前缀查询,但是没有给我想要的结果。
{
"query": {
"prefix" : { "title" : "jam" }
}
}
最佳答案
您将获得两个结果,因为前缀查询实际上对倒排索引运行一个regexp查询(keyword*)
,因此两个结果都将匹配。
您可以执行以下操作,并使用term query而不是前缀查询来对tokenized关键字进行完全匹配。
PUT exact_index1
{
"mappings": {
"document_type" : {
"properties": {
"title" : {
"type": "text"
}
}
}
}
}
POST exact_index1/document_type
{
"title" : "jamun"
}
POST exact_index1/_search
{
"query": {
"term": {
"title": {
"value": "jam"
}
}
}
}
希望这可以帮助
关于search - 从Elasticsearch中的精确单词匹配开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45137621/