2017-02-20 109 views
0

谁能告诉我如何在elasticsearch-js中严格匹配。这里是我的搜索节点弹性搜索严格匹配

client.search({{ 
    index: 'hash_tag', 
    type: 'hash_tag', 
    lenient:false, 
    body: { 
    query: { 
     match: { 
     tag_name: 'hash tag 1' 
     } 
    } 
    } 
}).then(function (body) { 
    console.log("body", JSON.stringify(body)); 
    }, function (error) { 
    console.trace(error.message); 
}) 

此查询搜索要么哈希标签,1我正在寻找确切的整串match.here是我的榜样指数的风格。

{ 
    "_index": "hash_tag", 
    "_type": "hash_tag", 
    "_id": "3483", 
    "_score": 0.019691018, 
    "_source": { 
    "id": "3483", 
    "labels": [ 
     "hash_tag" 
    ], 
    "tag_name": "hash tag 2" 
    } 
} 

回答

0

默认elasticsearch将“令牌化”文本字段将它们添加到倒排索引,这就是为什么你得到使用每个术语的结果。

为了获得完整的比赛,你可以有不同的方法,最简单的是使用一个match_frase

GET /megacorp/employee/_search 
{ 
"query" : { 
    "match_phrase" : { 
     "about" : "rock climbing" 
    } 
    } 
} 

另一种选择是增加特定字段的not_analyzed的映射,那么文本不会被标记。

+0

它的工作原理。感谢马科斯 – shivshankar