javascript - Elasticsearch 关键词不匹配

标签 javascript node.js elasticsearch

我正在 Elasticsearch 数据库中进行搜索操作。我需要的是,如果我给出关键字“react”进行搜索,它应该只给出与关键字“react”匹配的结果,如果关键字是“react-router”,结果应仅包含“react-router”。 问题是,如果我给出搜索关键字 'react' ,也会检索到与 'react-router' 关键字匹配的结果。 有没有比 match-phrase 更好的选择,我尝试了正则表达式和通配符,但没有用。 如何解决这个问题

`const searchTags = (tag) => {
  const answerPush = [];
  return new Promise((resolve, reject) => {
    client.search({
      index : constants.QUESTIONNAIRE_INDEX,
      type : constants.QUESTIONS_TYPE,
      scroll : constants.SCROLL,
      body : {
        query : {
          match_phrase : {
            tags : tag
          }
        }
      }
    },
    function getMoreUntilDone(err, res) {
      if (err) {
        reject(err);
        return;
      } else {
        res.hits.hits.forEach(function(hit) {
          answerPush.push(hit._source);
        });
        if (res.hits.total > answerPush.length) {
          client.scroll({
            scrollId: res._scroll_id,
            scroll: constants.SCROLL
          }, getMoreUntilDone);
        } else {
          const answerArray = [];
          answerPush.map(val => {
            answerArray.push(val);
          });
          const result = {
            questions: answerArray
          };
          resolve(result);
        }
      }});
  });
};

`

最佳答案

要通过精确匹配进行搜索,您必须使用术语查询。

它可能在您的情况下运行良好,请记住,Elasticsearch 将分析/索引您的字符串,例如,react-redux 将由于“-”而被“拆分”为两个关键字

您需要在映射中配置策略: https://discuss.elastic.co/t/how-to-search-for-terms-containing-hyphen-on--all-field/81335

关于javascript - Elasticsearch 关键词不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46886559/

相关文章:

javascript - 了解匿名函数中的参数(回调示例)

javascript - 如果取消选中任何复选框,如何取消选中所有复选框?

javascript - JavaScript 中回调/promise 或全局变量的替代方案

javascript - CSS 过渡不适用于移动设备

arrays - 如何在 Mongoose 中查询 findOne() 以便我们获得满足特定条件的文档数组的子集?

elasticsearch - Elasticsearch Helm chart 上的HTTPS

python - 为什么elasticsearch在pypy上引发elasticsearch_dsl.exceptions.ValidationException : You cannot write to a wildcard index.而不是在cpython上?

ruby-on-rails - 手动重新安装(没有自制程序)时,RSPEC找不到 Elasticsearch

node.js - 启动应用失败

javascript - MeanJS - 将 Angular 集成到 index.html 文件中