Elasticsearch

SpaceJam一个全文搜索的实例

TMDB数据库

es client 等值跟in查询 es查询index数据量_数据分析

数据导入

es client 等值跟in查询 es查询index数据量_elasticsearch_02

Use Case一查找Space Jam

es client 等值跟in查询 es查询index数据量_数据分析_03

Highlight -结果高亮

es client 等值跟in查询 es查询index数据量_搜索引擎_04

测试相关性一理解原理+多分析+多调整测试

  • 技术分为道和术两种
  • 道一 原理和原则
  • 术一 具体的做法,具体的解法
  • 关于搜索,为了有一个好的搜索结果。除了真正理解背后的原理,更需要多加实践与分析
  • 单纯追求“术”,会一直很辛苦。只有掌握了本质和精髓之“道”,做事才能游刃有余
  • 要做好搜索,除了理解原理,也需要坚持去分析一些不好的搜索结果。只有通过一定时间的积累,
    才能真正有所感觉
  • 总希望一个模型, 一个算法,就能毕其功于一役,是不现实的

监控并且理解用户行为

  • 不要过度调试相关度
  • 而要监控搜索结果,监控用户点击最顶端结果的频次
  • 将搜索结果提高到极高水平,唯一途径就是
  • 需要具有度 量用户行为的强大能力
  • 可以在后台实现统计数据,比如,用户的查询和结果,有多少被点击了
  • 哪些搜索, 没有返回结果

API

POST tmdb/_search
{
"_source": ["title","overview"],
 "query": {
   "match_all": {}
 }
}

POST tmdb/_search
{
  "_source": ["title","overview"],
  "query": {
    "multi_match": {
      "query": "basketball with cartoon aliens",
      "fields": ["title","overview"]
    }
  },
  "highlight" : {
        "fields" : {
            "overview" : { "pre_tags" : ["\\033[0;32;40m"], "post_tags" : ["\\033[0m"] },
            "title" : { "pre_tags" : ["\\033[0;32;40m"], "post_tags" : ["\\033[0m"] }

        }
    }
}

知识点回顾

  • 目标:用过一个具体案例,帮助你了解并巩固所学的知识点
  • 使用Python脚本导入及查询数据/ Mapping设定
  • Mapping 设定和分词器的选择至关重要
  • 监控并理解用户行为/查询并调试相关度
  • Boosting 查询字段/ Explain API/高亮显示

使用Search Template 和Index Alias

Search Template -解耦程序&搜索DSL

es client 等值跟in查询 es查询index数据量_搜索引擎_05

使用Search Template进行查询

es client 等值跟in查询 es查询index数据量_elasticsearch_06

Index Alias实现零停机运维

es client 等值跟in查询 es查询index数据量_es client 等值跟in查询_07

使用Alias创建不同查询的视图

es client 等值跟in查询 es查询index数据量_elasticsearch_08

API

POST _scripts/tmdb
{
  "script": {
    "lang": "mustache",
    "source": {
      "_source": [
        "title","overview"
      ],
      "size": 20,
      "query": {
        "multi_match": {
          "query": "{{q}}",
          "fields": ["title","overview"]
        }
      }
    }
  }
}
DELETE _scripts/tmdb

GET _scripts/tmdb

POST tmdb/_search/template
{
    "id":"tmdb",
    "params": {
        "q": "basketball with cartoon aliens"
    }
}


PUT movies-2019/_doc/1
{
  "name":"the matrix",
  "rating":5
}

PUT movies-2019/_doc/2
{
  "name":"Speed",
  "rating":3
}

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "movies-2019",
        "alias": "movies-latest"
      }
    }
  ]
}

POST movies-latest/_search
{
  "query": {
    "match_all": {}
  }
}

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "movies-2019",
        "alias": "movies-lastest-highrate",
        "filter": {
          "range": {
            "rating": {
              "gte": 4
            }
          }
        }
      }
    }
  ]
}

POST movies-lastest-highrate/_search
{
  "query": {
    "match_all": {}
  }
}

知识点回顾

  • Search Template的使用场景
  • 如果通过 Mocha语法定义一个Search Template
  • Index Alias的使用场景
  • 如何创建 与使用Index Alias
  • 通过Index Alias创建不同的查询视图