【问题标题】:How to search part of a sentece in elasticsearch如何在elasticsearch中搜索句子的一部分
【发布时间】:2019-09-26 21:37:08
【问题描述】:

我正在使用 Elasticsearch js 做一个搜索引擎,像这样:

  let jobs = await client.search({
      index: 'index',
      type: 'doc',
      body: {
        query: {
          bool: {
            must: [
              {
                match: {
                  title: 'test'
                }
              }
            ]
          }
        }
      }
    });

如果标题中有“test”,它会显示,但是当它有“hello this is/test”之类的内容时,它不会显示,我该如何解决?

【问题讨论】:

    标签: node.js elasticsearch


    【解决方案1】:

    你可以用*包围字符串:

    let jobs = await client.search({
      index: 'index',
      type: 'doc',
      body: {
        query: {
          bool: {
            must: [
              {
                match: {
                  title: '*test*'
                }
              }
            ]
          }
        }
      }
    });
    

    【讨论】:

    • 请尝试以. 为前缀,所以* 现在是.*。另请注意,如果 'test' 出现任何大写字母,它将找不到它
    • 匹配查询不支持通配符,您需要使用wildcard查询,但是使用前缀通配符根本没有性能
    • @Val 那么我应该如何搜索?
    • 尝试通配符,但这仅用于测试目的,具体取决于您拥有的数据量
    • @Val 通配符有效,但还有其他方法吗?只是为了确保字符串是字段的子字符串?
    猜你喜欢
    • 2011-09-21
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2017-04-17
    • 1970-01-01
    • 2016-01-07
    • 2013-09-11
    相关资源
    最近更新 更多