节点弹性搜索严格匹配

时间:2017-02-20 11:18:12

标签: node.js elasticsearch

任何人都可以告诉我如何在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 我正在查找完整的字符串匹配。这是我的示例索引样式。

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

1 个答案:

答案 0 :(得分:0)

默认情况下,elasticsearch会“标记”你的文本字段,将它们添加到倒排索引中,这就是你得到每个术语的结果的原因。

为了获得完全匹配,您可以采用不同的方法,最简单的方法是使用match_frase

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

另一种选择是添加具有not_analyzed映射的特定字段,然后文本将不会被标记化。