ES学习(十)

一、相关度评分(TF(term frenquency)/IDF(inverse document frequency)算法)

  A、Term Frequency: 搜索出现次数越多越相关

  B、Inverse document frequency: 搜索文本中的各个词条在整个索引的文档中出现了多少次,出现的次数越多,就越不相关

  C、Field-Length:field越短,越相关

二、Bouncing Result问题

  A、两个document排序,field值相同;不同的shard上,可能排序不同;每次请求轮询打到不同的shard上,每次页面看到的排序就不同。

    解决:将preference设置一个字符串,比如user_id,这样的话可以让同一个user对应到一个shard上去

  B、preference取值:_primary, _primary_first, _local, _only_node:xyz, _prefer_node:xyz, _shards:2,3

三、Scroll搜索

  A、POST /ecommerce/_search?scroll=1m
  {
    "size":2
  }

  POST /_search/scroll
  {
    "scroll":"1m",
    "scroll_id":"DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAYj0WMjQwTVVrN2tUY3VBTDIyZ1lkakFRQQ=="
  }

  B、和分页区别

    分页主要是用来一页一页搜索给用户看;scroll是用来一批一批检索数据给系统处理

四、setting

  PUT /test_analyzer
  {
    "settings": {
      "number_of_replicas": 1,
      "number_of_shards": 1,
      "analysis": {
        "analyzer": {
          "es_std":{
            "type":"standard",
            "stopwords":"_english_"
          }
        }
      }
    }
  }

四、dynamic

  A、策略

    1. true:遇到陌生字段就进行dynamic mapping

    2. false:遇到陌生字段就忽略

    3. strict:遇到陌生字段就报错

  B、"date_detection": false 时间类型探测

五、零停机重建索引

  A、建立别名:PUT /twitter/_alias/alias1

  B、从旧索引scroll查询出所有数据导入新建索引

  C、将别名切换到新索引(更新别名操作,删除旧的,添加新的)

posted on 2019-12-31 15:24  DjanFey  阅读(108)  评论(0编辑  收藏  举报

导航