基于Term的查询

Term是表达语义的最小单位。在ES中,Term查询,不对输入做分词。 对keyword进行查询,可以进行精准的匹配,但是仍然会进行算分,使用constant score将query变为filter,可以忽略TF-IDF计算,避免相关性算分开销,提升性能。

基于全文的查询

索引和搜索都会进行分词。查询的字符串会传给一个分词器,然后生成一个可供查询的词项列表。对每个词项进行查询,最终将结果合并。

结构化搜索

结构化搜索是指对结构化数据的搜索,而结构化数据都遵守规定的、结构化的格式。 ES中对于多字段的term查询,逻辑关系是包含而不是等于。如果希望的是等于,那么需要额外添加一个计数的字段,通过bool query来解决。