zoukankan      html  css  js  c++  java
  • ES 应用

    1. ES的不同之处:   全文检索、处理同义词、通过相关性给文档评分, 从同样的数据中生成分析与聚合数据, 实时大型批处理。

    安装es与kibana

    1、下载:https://www.elastic.co/downloads/elasticsearch 
    2、解压到d:elasticsearch-2.3.3目录
    3、配置Elasticsearch
    (1)配置 configelasticsearch.yml文件
    cluster.name: lgs-es
    node.name: node-1
    (2)配置 binelasticsearch.in.bat文件
    set ES_MIN_MEM=4g
    set ES_MAX_MEM=4g
    4、运行服务
    双击 binelasticsearch.bat 运行

    2、安装kibana插件
    (1)下载地址: https://www.elastic.co/downloads/kibana
    (2)解压到d:kibana-4.5.1-windows目录
    (3)配置configkibana.yml文件
    elasticsearch.url: "http://localhost:9200"
    (4)binkibana.bat //启动kibana
    (5)浏览器输入http://localhost:5601

    2. 查看集群状态:

    http://localhost:9200/_cluster/health

    3. 设置分片:   它本身就是一个完整的搜索引擎, 我们的文档被存储和索引到分片内,但是应用程序是直接与索引而不是与分片进行交互

    PUT /blogs
    {
       "settings" : {
          "number_of_shards" : 3,
          "number_of_replicas" : 1
       }
    }
    

      

    4. 设置存储: 

    _index : 一个索引仅仅是逻辑上的命名空间, 这个命名空间由一个或者多个分片组合在一起。

    _type :  types 的文档可能有不同的字段,但最好能够非常相似。

    ID :  是一个字符串, 当它和 _index 以及 _type 组合就可以唯一确定 Elasticsearch 中的一个文档。 当你创建一个新的文档,要么提供自己的 _id ,要么让 Elasticsearch 帮你生成。

      

    5. 分布式存储:   

    分片规则::   shard = hash(routing) % number_of_primary_shards       routing: 文档 _id

    6. 搜索:

    /_all/u*,tweet/_search           在多索引搜索
    GET /_search?size=5&from=5       分页
    GET /_search?q=mary              查询所有包含 mary 字符串的文档
    
    GET /_search                     匹配查询
    {
        "query": {
            "match": {
                "tweet": "elasticsearch"
            }
        }
    }
    
    {                                 合并查询
        "bool": {
            "must":     { "match": { "tweet": "elasticsearch" }},
            "must_not": { "match": { "name":  "mary" }},
            "should":   { "match": { "tweet": "full text" }},
            "filter":   { "range": { "age" : { "gt" : 30 }} }
        }
    }
    
    GET /_search                      多级排序查询
    {
        "query" : {
            "bool" : {
                "must":   { "match": { "tweet": "manage text search" }},
                "filter" : { "term" : { "user_id" : 2 }}
            }
        },
        "sort": [
            { "date":   { "order": "desc" }},
            { "_score": { "order": "desc" }}
        ]
    }
    

      

     

    7. Mapping结构

      

    8. 使用分析器:


    GET /_analyze { "analyzer": "standard", "text": "Text to analyze" 要分析(分词)的文本 }

      

    9. 语言处理

    GET /my_index/my_type/_search
    {
        "query": {                    短语查询   slop 参数告诉 match_phrase 查询词条相隔多远时仍然能将文档视为匹配 
            "match_phrase": {
                "title": {
                    "query": "quick fox",
                    "slop":  1
                }
            }
        }
    }
    
    GET /my_index/my_type/_search
    {
      "query": {
        "bool": {
          "must": {                             must 子句从结果集中包含或者排除文档
            "match": { 
              "title": {
                "query":                "quick brown fox",
                "minimum_should_match": "30%"
              }
            }
          },
          "should": {                           should 子句增加了匹配到文档的相关度评分。
            "match_phrase": { 
              "title": {
                "query": "quick brown fox",
                "slop":  50
              }
            }
          }
        }
      }
    }
    
    
    
    GET /my_index/address/_search
    {
        "query": {
            "regexp": {                       正则查询
                "postcode": "W[0-9].+" 
    
            }
        }
    }
    
    {
        "match_phrase_prefix" : {              即时查询: 相当于 walker johnnie bl*
            "brand" : {
                "query": "walker johnnie bl", 
    
                "slop":  10
            }
        }
    }
    PUT /my_index/my_type/_mapping                               为索引与搜索构建不同的索引
    {
        "my_type": {
            "properties": {
                "name": {
                    "type":            "string",
                    "index_analyzer":  "autocomplete", 
    
                    "search_analyzer": "standard" 
    
                }
            }
        }
    }
    

      

      



    10. 实践

    GET /news/test/_search
    {
        "query": {                    
            "match_phrase": {
                "content": {
                    "query": "活动 后勤",
                    "slop":  20
                }
            }
        }
    }
    
    
    GET /_analyze
    {
      "analyzer": "standard",
      "text": "Text to analyze"            
    }
    
    GET /news/test/_mapping
    
    PUT /test/test/1
    {
      "bookId":1,
      "bookName":"Java程序设计",
      "publishDate":"2018-01-12"
    }
    
    
    PUT /test/
    {
      "mappings":{
        "books": {
           "properties": {
              "bookId": {"type": "text"},
              "bookName": {"type": "text"},
              "publishDate": {"type": "date"}
           }
        }
      }
    }
    
    GET /test/books/_mapping
    
    GET _cat/indices
    
    DELETE /books
    
    
    #mapping可以新增 不能更改 
    PUT /test/books/_mapping                               
    {
        "books": {
            "properties": {
                "bookName2": {
                    "type":            "text",
                    "analyzer": "english",
                    "search_analyzer": "standard" 
    
                }
            }
        }
    }
    

      










  • 相关阅读:
    记一次网站迁移的过程
    如何才能搜索微信群和网盘群
    2021最新车载u盘歌曲集合,每轴更新。想要拉你入群
    工具分享:目录生成器
    福利,剪映PC版来了~ 支持windos系统和苹果系统
    微信8.0来了,可以加1w人好友,微商必看!!!
    centOS7安装 redis server
    Task handler raised error: ValueError('not enough values to unpack (expected 3, got 0)')
    《More Effective C++》读书笔记(下)
    《More Effective C++》读书笔记(中)
  • 原文地址:https://www.cnblogs.com/ruili07/p/10334637.html
Copyright © 2011-2022 走看看