当前位置:首页 > 资讯 > 正文

ElasticSearch DSL语句(bool查询、算分控制、地理查询、排序、分页、高亮等)

ElasticSearch DSL语句(bool查询、算分控制、地理查询、排序、分页、高亮等)

  • 查询所有:查询所有数据,一般在测试时使用。march_all,但是一般显示全部,有一个分页的功能
  • 全文检索(full text)查询:利用分词器对用户的输入内容进行分词,然后去倒排索引库匹配。例如:
    • match_query
    • mutil_match_query
  • 精确查询:根据精确词条值查询数据,一般查找的时keyword、数值、日期、boolean等字段。例如:
    • ids
    • term
    • range
  • 地理查询(geo):根据经纬度查询,例如:
    • geo_distance
    • geo_bounding_box
  • 复合(compound)查询:复合查询时将上面各种查询条件组合在一起,合并查询条件。例如:
    • bool
    • funcation_score
 

match 与 multi_match 的与别是前者根据单字段查,后者根据多字段查。
参与搜索的字段越多,查询效率越低,建议利用copy_to将多个检索字段放在一起,然后使用match—all字段查。

 
 

精确查询: term字段全值匹配,range字段范围匹配。
精确查询一般查找keyword、数值、boolean等不可分词的字段

 
 
 
 
 

复合查询(compound ):将简单查询条件组合在一起,实现复杂搜索逻辑。

  • ,可以控制文档的相关性算分,控制排名。例如百度竞价
 
 
 
 
 
  • search after:分页时需要排序,原理是从上次的排序值开始(末尾值),查询下一页的数据。官方推荐使用,不会太占内存。手机向下反动滚页。
  • scroll:原理是将排序数据形成快照,保存在内存。不推荐

ES默认搜索字段和高亮字段必须一致,否则不会高亮。或者使用 也能高亮。

 

分页和排序

 

高亮