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" 

            }
        }
    }
}

  










原文地址:https://www.cnblogs.com/ruili07/p/10334637.html