搜索和查询

查询上下文

GET product/_search
image.png
took:代表查询耗时 ms
time_out:代表是否超时
shards:代表查询使用分片情况
hits:真正返回给我们的结果
total:value:一共有5条
max_score:1.0 评分
hits:具体的数据
index:所属的索引
type:类型
id
socre:评分值
source:元数据
字段
字段
字段

相关度评分

相关度评分,对搜索结果排序,认为搜索结果与搜索预期相关度越高评分就越高,在7.x之前相关度评分默认使用TF/IDF算法计算而来,7.x之后默认为BM25

元数据

  1. 禁用_source:
    1. 好处:节省存储开销
    2. 坏处:
      • 不支持update、update_by_query和reindex API。
      • 不支持高亮。
      • 不支持reindex、更改mapping分析器和版本升级。
      • 通过查看索引时使用的原始文档来调试查询或聚合的功能。
      • 将来有可能自动修复索引损坏。

总结:如果只是为了节省磁盘,可以压缩索引比禁用_source更好。

  1. 数据源过滤器:
    Including:结果中返回哪些field
    Excluding:结果中不要返回哪些field,不返回的field不代表不能通过该字段进行检索,因为元数据不存在不代表索引不存在

    1. 在mapping中定义过滤:支持通配符,但是这种方式不推荐,因为mapping不可变

      1. PUT product
      2. {
      3. "mappings": {
      4. "_source": {
      5. "includes": [
      6. "name",
      7. "price"
      8. ],
      9. "excludes": [
      10. "desc",
      11. "tags"
      12. ]
      13. }
      14. }
      15. }
    2. 常用过滤规则

      • “_source”: “false”,
      • “_source”: “obj.*”,
      • “_source”: [ “obj1.“, “obj2.“ ],
      • “_source”: {
        “includes”: [ “obj1.“, “obj2.“ ],
        “excludes”: [ “*.description” ]
        }