ElasticSearch 查询text类型字段, 无法返回数据

起因:

  使用了一次term查询想进行完全匹配,失败了。

经过:

  经过多方调查(虽然也没有很多)发现原因如下:

    我想要进行查询的字段在创建mapping时使用的“text”数据类型进行创建。

    众所周知text类型的数据在elasticsearch中会进行分词并建立倒排索引,因此它会对每个词进行索引,而不会建立整个句子的索引。

    term搜索时会对整个句子作为关键词进行搜索,由于没有建立整个句子的关键词索引,因此无法查找到东西。

结果:

  解决方法:

    有人说没有方法,只能重新建mapping,建mapping的时候改成别的类型。

    我将term搜索改为match_phrase搜索,match_phrase搜索相当于sql语句里面的“like”。这种查询长文本的时候会很慢,不过可以用来搜索标题之类的查询

    由于我的数据样本每个标题和每个标题都不同,标题之间也没有明显的包含关系,因此之间拿来当term用了。

    不具有普遍性,换其它数据可能不适用,但是总之我可以先凑合。

你可能感兴趣的:(ElasticSearch 查询text类型字段, 无法返回数据)