ES查询总结

用户需要检索和发觉符合条件的信息,ES如何帮忙?


1、用户如何问问题?


2、用户如何借助ES回答问题?

1)查询包含“john smith”短语的文档(文档中任何包含john smith字段均可以命中吗?是的,所有支持full-text搜索的字段均考虑在内): 全文检索之 短语匹配 match_phrase

2)如何高亮匹配的文本?:全文检索之高亮匹配字段

3)按某个字段对返回结果进行汇总/聚合/分组: aggregation, grouping?: 根据兴趣将结果进行分汇总。


3、有什么替代方案?


4、 ES 知识点总结

1)  多词、多字段查询语句: match_multi

多词: 查询语句包含多个词; 多字段: 查询在文档的多个字段进行。

可将多词、多字段查询分为几种情况?

single best field(最佳字段):在一个字段中出现多》分散在多个字段中》在一个字段中出现少

most fields(最多字段),

cross fields(跨字段:当前实现): field centirc versers term centric? term centric!!

2)你最希望的查询结果是什么?

在首页中返回给用户最相关的文档!!!最佳匹配排在最前面!!

返回所有相关文档 versers 不返回任何不相关文档!!!

如何调优相关度计算?: 想似词、 词根、方言

3)你希望查询的词之间按顺序出现的相关分数高!

match_phrase(非常严格的查询,每个分词都按照term匹配): 所有词都出现、并且按顺序,并且相邻

4)如何减少/限制match_phrase的查询开销?

5)partial update of a document

6) 结构化查询 or 全文检索?

7) 全文检索面临的核心问题是什么?

相关度计算、analysis(分词、计算反向索引,并查询反向索引表)

8)查询和过滤有什么不同?

查询:模式匹配?how relevance?

过滤:逻辑运算?yes or no


9)如果一个字段是array, 如何聚合?

推荐阅读更多精彩内容