• 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、将别名切换到新索引(更新别名操作,删除旧的,添加新的)

  • 相关阅读:
    三级菜单的实现方式
    简单登录接口实践
    C++中的set和java的hashset有何区别?
    css 利用文档结构给列表添加样式
    谈谈我对JS中this的理解
    谈谈我对JS原型的理解
    使用node.js,实现简单的JS文件合并小工具
    谈谈我对JS闭包的理解
    谈谈我对JS作用域的理解
    模拟实现 百度翻译 右下方的可折叠的分享按钮列表
  • 原文地址:https://www.cnblogs.com/DjanFey/p/12124648.html
Copyright © 2020-2023  润新知