//简单查看健康状态
GET 192.168.1.91:9200/_cat/health?v
//查看有那些索引
GET 192.168.1.91:9200/_cat/indices?v
//ik分词器
下载ik分词器https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.1/elasticsearch-analysis-ik-7.10.1.zip
切换用户 su ElasticSearch
在/usr/local/elasticsearch/plugins新建目录ik
在/usr/local/elasticsearch/plugins/ik下解压ik分词器
重启es//自定义生僻词匹配, 比如"网红"
新建文件夹 /usr/local/elasticsearch/plugins/ik/config/custom
新建文件 /usr/local/elasticsearch/plugins/ik/config/custom/mydict.dic
在mydict.dic里每行加入一个自定义匹配词
在/usr/local/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">/custom/mydict.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>//建立一个索引,可以携带body也可以不携带body,ik_max_wrod,iksmart中文分词器
PUT 192.168.1.91:9200/test_index?pretty
{"settings":{"number_of_shards":1,"number_of_replicas":0},"mappings":{"properties":{"my_field":{"type":"text"},"title":{"type":"text","analyzer":"ik_max_word",},"content":{"type":"text","analyzer":"ik_max_word"}}}
}
//建立索引时指定dynamic, 可以指定true代表有新增字段就新增, false代表有新增字段就忽略, strict代表有新增字段就报错
{"mappings":{"dynamic":"strict","properties":{"title":{"type":"keyword"}}},"settings":{"analysis":{"analyzer":{"es_std":{"type":"standard","stopwords":"_english_"}}}}
}//修改索引副本数量
192.168.1.91:9200/test_create_mapping/_settings
{"number_of_replicas":1
}//删除索引
DELETE 192.168.1.91:9200/test_index
//PUT 方法向索引中插入数据必须指定ID
PUT 192.168.1.91:9200/students/_doc/1
{"name":"xxx","age":"xx"
}
//POST 方法向索引插入数据则不用指定id, 系统随机生成
POST 192.168.1.91:9200/students/_doc/
{"name":"xxx","age":"xx"
}
//查询文档, 指定文档id
GET 192.168.1.91:9200/students/_doc/1
//查询文档, 指定多个id
POST 192.168.1.91:9200/students/_mget
{"ids":["rI_M4nYBoiFM3OPwnsfR","rY_15HYBoiFM3OPw68cz","ro8E5XYBoiFM3OPwDMea"]
}
//查询所有文档
GET 192.168.1.91:9200/students/_search
POST 192.168.1.91:9200/students/_search
{"query":{"match_all":{}}
}
//multi_match匹配
POST 192.168.1.91:9200/students/_search
{"query":{"multi_match":{"query":"Jon","fields":["name", "hoppy"]}}
}//term查询不对关键词分词, 用于匹配不被分词的字段,也就是正排索引
POST 192.168.1.91:9200/students/_search
{"query":{"term":{"name":"Jon Stand"}}
}
//tersm 一个字段查询两个搜索词,
{"query":{"terms":{"name":["Jon", "xiaohua"]}}
}
//terms适合查询不分词的字段, 字段自带keyword 265个字符不分词
POST 192.168.1.91:9200/students/_search
{"query":{"term":{"name.keyword":"Lingos Dan"}}
}//直接filter
POST 192.168.1.91:9200/students/_search
{"query":{"constant_score":{"filter":{"range":{"age":{"gt":5}}}}}
}
//直接range
POST 192.168.1.91:9200/students/_search
{"query":{"range":{"age":{"gt":5}}}
}//match先对搜索词分词,匹配分词之后的倒排索引,sort排序, from,size分页, source指定返回字段类似mysql select, highlight指明高亮字段
POST 192.168.1.91:9200/students/_search
{"query":{"match":{"name": "Jon"}},"sort":{"age":"asc"},"from":0,"size":2,"_source":["hoppy","name"],"highlight":{"fields":{"name":{}}}
}
//指定match的精准度, boost可以提高分数排名.
POST 192.168.1.91:9200/students/_search
{"query":{"match":{"name":{"query":"Jon Stand","minimum_should_match":"50%","boost": 2}}}
}
//dis_max 实现best_field策略, 取单个单个字段最高分,单个字段匹配最多关键词, tie_breaker 指定其他字段参与分数运算,其他字段的得分乘以tie_breaker的值加到总分数
POST 192.168.1.91:9200/students/_search
{"query":{"dis_max":{"queries":[{"match":{"name":"Jon Stand"}},{"match":{"hoppy":"eat drink play happy"}}],"tie_breaker":0.3}}
}// most_field策略.
POST 192.168.1.91:9200/students/_search
{"query":{"multi_match":{"query": "Jon Stand eat","type":"most_fields","fields":["name","hoppy"]}}
}
// cross_field策略
POST 192.168.1.91:9200/students/_search
{"query":{"multi_match":{"query": "Jon Stand eat","type":"cross_fields","fields":["name","hoppy"]}}
}//先去倒排匹配Jon, 然后匹配Stand, 并且确认两个词是相邻的, 如果需要匹配跳跃的两个词,sloop可以指定相隔几个词
POST 192.168.1.91:9200/students/_search
{"query":{"match_phrase":{"name":{"query": "Jon Stand","slop": 3}}}
}//前缀搜索 prefix
POST 192.168.1.91:9200/students/_search
{"query":{"prefix":{"name.keyword":{"value": "J"}}}
}
//模糊查询, 比如搜索"我是谁"写成了"我是水"
{"query":{"fuzzy":{"name":{"value":"jon","fuzziness": 1}}}
}//bool查询 minimum_should_match 代表should条件里至少匹配几条,如果指定1条,则should条件里至少有一条, must 满足条件, 而should没有匹配到至少一条,此文档依然当做不匹配
POST 192.168.1.91:9200/students/_search
{"query":{"bool":{"must":[{"match":{"name":"Jon"}},{"match":{"age": 15}}],"should":[{"match":{"hoppy":"eat"}},{"match":{"hoppy": "sleep"}}],"must_not":[{"match":{"hoppy":"drink"}}],"minimum_should_match": 1}}
}//加入filter过滤查询
POST 192.168.1.91:9200/students/_search
{"query":{"bool":{"must":{"match":{"name": "Jon"}},"filter":{"range":{"age":{"gt": 10}}}}      }
}//先查询数据, 再对数据聚合查询,按age分组, 每组有多少人,
//aggs代表聚合, size:0表示不返回匹配到的用于分析的原始数据,
//group_by_age代表给分组起的名字, terms代表分组操作, 分组的字段属性fielddata必须为true
//aggs里可以嵌套aggs对分组后的数据再进行运算,
//avg_age是给嵌套聚合起的名字, avg代表求分组里某个字段的平均值
//order代表用聚合之后每一组的统计信息排序, 这里是每一组的age平均值对组进行排序
POST 192.168.1.91:9200/students/_search
{"query":{"match_all":{}},"aggs":{"group_by_age":{"terms":{"field":"age","order":{"avg_age":"desc"}},"aggs":{"avg_age":{"avg":{"field":"age"}}}}},"size":0
}//修改字段属性, 属性改为fielddata之后会在该字段增加正排索引
POST 192.168.1.91:9200/students/_mapping
{"properties":{"name":{"type":"text","fielddata":true}}
}//多次聚合运算
POST 192.168.1.91:9200/students/_search
{"query":{"match_all":{}},"aggs":{"group_by_age":{"terms":{"field":"age"},"aggs":{"rang_age":{"range":{"field":"age","ranges":[{"from":0,"to":10},{"from":10,"to":20},{"from":20,"to":30}]   }, "aggs":{"age_avg":{"avg":{"field":"age"}}}}}}}    }//PUT更新数据,更新整个文档
PUT 192.168.1.91:9200/students/_doc/1
{"name":"xxx","age": "xx"
}
//POST只更新某个字段
POST 192.168.1.91:9200/students/_update/1
{"doc":{"age":"xx"}
}
//删除文档
DELETE 192.168.1.91:9200/students/_doc/1
//查看mapping
GET 192.168.1.91:9200/students/_mapping//常用分词器
//分词器 对exact value 和 full text分别对待
//exact value 在建立索引和搜索关键词的时候都不分词
//full text 在建立索引和所搜关键词的时候都分词
//例句
"Set the shape to semi-transparent by calling set_trans(5)"
standard analyzer: set, the, shape, to, semi, transparent, by, calling, set_trans, 5
simple analyzer: set, the, shape, to, semi, transparent, by calling, set, trans
whitespace analyzer: Set, the, shape, to, semi-transparent, by, calling, set_trans(5)
language analyzer:特定语言分词器
//测试分词器
POST 192.168.1.91:9200/_analyze
{"analyzer":"standard","text":"wang dong liang"
}//mapping 常见类型 long, double, date, text, boolean,keyword
//keyword, date, boolean, long ,double类型都不会进行分词
//先创website索引建索引再创建mapping, field类型一但创建不可修改
PUT 192.168.1.91:9200/website?pretty
POST 192.168.1.91:9200/website/_mapping
{"properties": {"content": {"type":"text","analyzer":"english"},"post_date":{"type":"date"},"overview":{"type":"long"},"price":{"type":"double"},"is_on_sale":{"type":"boolean","index":"false"}}
}
//一个字段指定两种类型
POST 192.168.1.91:9200/students/_mapping
{"properties":{"where_going":{"type":"text","fields":{"raw":{"type":"keyword","index":false}},"fielddata"}}
}
//配置一个es内建分析器,修改其行为, 新建index的时候才能指定,
PUT 192.168.1.91:9200/website3
"settings": {"analysis": {"analyzer": {"std_english": { "type":      "standard","stopwords": "_english_"}}}},//自定义analyzer
PUT 192.168.1.91:9200/website3
{"settings":{"analysis":{"char_filter":{"&_to_and":{"type":"mapping","mappings":["& => and"]}},"filter":{"my_stopwords":{"type":"stop","stopwords":["the", "a"]}},"analyzer":{"my_analyzer":{"type":"custom","char_filter":["html_strip", "&_to_and"],"filter":["lowercase", "my_stopwords"],"tokenizer":"standard"}}}}
}

ElasticSearch - CURD相关推荐

  1. 40000+字超强总结?阿里P8把Java全栈知识体系详解整理成这份PDF

    40000 +字长文总结,已将此文整理成PDF文档了,需要的见文后下载获取方式. 全栈知识体系总览 Java入门与进阶面向对象与Java基础 Java 基础 - 面向对象 Java 基础 - 知识点 ...

  2. elasticsearch 文档_ElasticSearch系列04:索引与文档的CURD

    引言:上一节我们学习了ES的数据类型,有同学反馈说,里面的语句看不懂.今天,TeHero就为大家讲解ES索引和文档的CURD的操作.掌握了基本操作才能更好的系统学习,让我们开始吧! 1.索引的CURD ...

  3. (3)elasticsearch相关概念和索引的CURD

    核心概念 https://www.elastic.co/guide/en/elasticsearch/reference/7.10/index.html 什么是搜索引擎? 全文搜索引擎 自然语言处理( ...

  4. Elasticsearch文档CURD操作

    一: 新增文档POST /{index}/{type} 或 PUT /{index}/{type}/{id} 注意:新增文档时可以显式指定id,id可以是数字也可以是字符串,如果不显示指定id,系统会 ...

  5. ElasticSearch(Es的CURD)基本操作命令

    Es的CURD基本操作命令 使用工具 head kibana IK分词器 文章目录 基础命令 新增 查询 查询索引下所有的文档 修改 删除 复杂查询 精准查询 查询并指定返回那些字段 排序查询 分页查 ...

  6. ElasticSearch教程——汇总篇

    环境搭建篇 ElasticSearch教程--安装 ElasticSearch教程--安装Head插件 ElasticSearch教程--安装IK分词器插件 ElasticSearch教程--安装Ki ...

  7. 大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk

    2019独角兽企业重金招聘Python工程师标准>>> 本文就架构,功能,产品线,概念等方面就ElasticSearch和Splunk做了一下全方位的对比,希望能够大家在制定大数据搜 ...

  8. elasticsearch 第一篇(入门篇)

    介绍 elasticsearch是一个高效的.可扩展的全文搜索引擎 基本概念 Near Realtime(NRT): es是一个接近实时查询平台,意味从存储一条数据到可以索引到数据时差很小,通常在1s ...

  9. Splunk和ElasticSearch深度对比解析

    随着Splunk越来越被大家熟知和认可,现在市面上也不断涌各种同类产品,作为大数据搜索界的翘楚Splunk和ElasticSearch,绝对值得我们去学习,探索和使用,因此为了造福Splunk的铁粉和 ...

最新文章

  1. 探索 ConcurrentHashMap 高并发性的实现机制
  2. QQ视频直播架构及原理
  3. 本地tomcat的start.bat启动时访问不出现小猫图标
  4. Hadoop Hive概念学习系列之hive的数据压缩(七)
  5. [转载] python类运算符的重载
  6. matlab时域转换成频域_从时域到频域,你只需要旋转一下!
  7. Windows下Maven 环境配置
  8. python有趣的代码-python菜鸟教程,python好玩又简单的代码
  9. git add/commit/pull之间的关系
  10. Silverlight 设置DataGrid中行的提示信息
  11. Linux中的基础指令
  12. java使用poi操作ppt(导入,导出,读取,添加,拼接,替换文本,页面排序)
  13. mysql list dbs_关于mysql_list_dbs()函数的10篇文章推荐
  14. latex输入3.3.1类型的标题
  15. Linux下QT平台Mysql数据库开发环境配置
  16. 服务器 apk文件,Apk文件介绍(一)
  17. 什么是蓝牙适配器?它有哪些性能特点?-道合顺大数据Infinigo
  18. 获取给定字符串最长不重复子串
  19. PhpStorm配置PHP环境方法
  20. 吐血整理!万字原创读书笔记,数据分析的知识点全在这里了

热门文章

  1. RTD2556/RTD2556T,支持输入HDMI,DP,输出LVDS,EDP,2.5K分辨率
  2. 深层学习:心智如何超越经验1.1 混乱的时钟
  3. CSDN中编辑文章时,如何去除图片水印?
  4. raid技术基本原理
  5. QQ群78928780记录整理:90521-精华
  6. 【tio-websocket】5、tio-websocket-server统计在线人数
  7. Echarts分时图绘制
  8. oracle如何查看pdb,Oracle基础操作——CDB-PDB
  9. 基于【GIS地理信息+实景三维】在一体化地质灾害监测预警平台中的核心应用
  10. 为用户提供功能模块(详解)