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

安装es与kibana

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

2、安装kibana插件
(1)下载地址: https://www.elastic.co/downloads/kibana
(2)解压到d:\kibana-4.5.1-windows目录
(3)配置config\kibana.yml文件
elasticsearch.url: "http://localhost:9200"
(4)bin\kibana.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" }
}
}
}

  


ES 应用的更多相关文章

  1. 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)

    0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...

  2. OpenGL ES 3.0: 图元重启(Primitive restart)

    [TOC] 背景概述 在OpenGL绘制图形时,可能需要绘制多个并不相连的图形.这样的情况下这几个图形没法被当做一个图形来处理.也就需要多次调用 DrawArrays 或 DrawElements. ...

  3. 分享一个CQRS/ES架构中基于写文件的EventStore的设计思路

    最近打算用C#实现一个基于文件的EventStore. 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event Sourcing这种架构,我博客 ...

  4. ES 学习总结

    ES 总结: es 是基于lucene的, 是java 实现的, 很多概念和lucene是相同的 索引-- 对应数据库的表,mongoDB中的集合 文档,由字段组成, 一个字段可以出现多次. 字段,其 ...

  5. ES性能测试

    测试背景   因为ES(ElasticSearch)前段时间查询效率有点慢,技术小组对索引做了一些改动,因此需要测试一下修改后的查询效率,跟之前的结果做一下对比,所以有了这次测试.   需求简述   ...

  6. [翻译]ES 提案: global

    Jordan Harband 的 ECMAScript 提案“global”现在处于第三阶段.该提案提供了一种新的用于访问全局对象的标准方式. 全局对象的引用 下面是常用的几种引用全局对象的方式: 全 ...

  7. ElasticSearch+ElasticGeo+Geoserver发布ES地理数据

    依赖GeoserverElasticSearchElasticGeo部署部署ElasticGeo使用创建ES数据源并发布发布 依赖 Geoserver 环境搭建参考: ElasticSearch 环境 ...

  8. opengl es中不同的绘制方式

    opengl es中不同的绘制方式 转载请保留出处:http://xiaxveliang.blog.163.com/blog/static/297080342013467344263/ 1. GL_P ...

  9. es查询命令备份(只需要网页9200/_plugin/head/就可以访问)

    本文只是写一些常用es命令,这里不用任何客户端,只用 9200/_plugin/head/ 那个端口网页就可以,然后是复合查询. 注意es其实一个idnex只能有一个type,如果一个index做了多 ...

  10. lucene和es总结

    一.首先介绍lucene涉及到的排序过程 1.1.如何自定义排序对象 你可以自定义collector对象: 亦可以自定义comparator对象: 可以自定义scoredoc对象,决定如何处理结果集合 ...

随机推荐

  1. _C#发送邮箱

    public ActionResult lead() { SendEmail("邮箱号", "吃饭么?", "你要吃什么啊"); retur ...

  2. XML记一次带命名空间的xml读取

    public static void ReadXML(string xmlUrl) { //判断文件是否存在 if (!File.Exists(xmlUrl)) { Console.WriteLine ...

  3. [PHP] 魔术方法__get __set __sleep __wakeup的实际使用

    1.__get __set是在给不可访问属性赋值和读取时,调用 2.__sleep 是在序列化对象的时候调用 3.__wakeup是在反序列化对象的时候调用 4.可以在序列化对象的时候 , 只序列化指 ...

  4. 单元测试与Mockito

    1.什么是单元测试? 顾名思义单元测试就是对软件系统中最小的单元(函数.类)做测试,类似焊接电路板前对每个电容器(电子元器件)的测试.从软件测试分级来看,单元测试是最底层也是离程序员最近的一层,一般由 ...

  5. mysql 查询导出(txt,csv,xls)

    1 简介 工作中产品经常会临时找我导出一些数据,导出mysql查询结果数据有几种方法,下面介绍3种. ①  mysql -u  -p  -e "sql" db > filep ...

  6. 基于element-tree-table树型表格点击节点请求数据展开树型表格

    效果: 引用CSS.JS: Vue.element-ui.Axios treeTable: https://github.com/ProsperLee/element-tree-grid 模拟根据父i ...

  7. Several ports (8005, 8080, 8009) required by Tomcat v9.0 Server at localhost

    Several ports (8005, 8080, 8009) required by Tomcat v9.0 Server at localhost 问题:Tomcat服务器的端口被占用 解决: ...

  8. DVWA 黑客攻防演练(四)文件包含 File Inclusion

    文件包含(file Inclusion)是一种很常见的攻击方式,主要是通过修改请求中变量从而访问了用户不应该访问的文件.还可以通过这个漏洞加载不属于本网站的文件等.下面一起来看看 DVWA 中的文件包 ...

  9. access denied for user 'root'@'localhost'(using password:YES) FOR WINDOWS

    以windows为例: mysql5.5 1. 关闭正在运行的MySQL服务. 2. 打开DOS窗口,转到mysql\bin目录. 3. 输入mysqld --skip-grant-tables 回车 ...

  10. c/c++ 多线程 层级锁

    多线程 层级锁 当要同时操作2个对象时,就需要同时锁定这2个对象,而不是先锁定一个,然后再锁定另一个.同时锁定多个对象的方法:std::lock(对象1.锁,对象2.锁...) 但是,有的时候,并不能 ...