ES-DDL
索引库备份:POST http://ip:port/_reindex
"source": {
"index": "medical_record_code"
},
"dest": {
"index": "medical_record_code_bak"
}
}
索引库创建:PUT http://ip:port/index_name
{
"mappings" : {
"properties" : {
"name": {
"type": "keyword"
},
"id": {
"type": "keyword"
}
}
}
}
索引库删除:DEL
。。。
索引库添加索引字段:POST:http://ip:port/zhouls2/mappings
"properties": {
"content": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart"
}
}
}
ES-DML
ES数据全部删除:POST http://ip:port/zhouls2/_delete_by_query
{
"query": {
"match_all": {
}
}
}
ES插叙所有索引库:GET http://ip:port/_cat/indices
ES-term查询:POST http://ip:port/medical_record_code/_search
"query" : {
"bool" : {
"must" : [
{ "terms" : {"id" : ["53741008"]}}
]
}
}
}
// 多字段
{
"query": {
"term": {
"id": "34",
"name":"2-01"
}
}
}
ES聚合查询-分桶-脚本:POST http://ip:port/medical_record_code/_search
"size":0,
"aggs": {
"gp": {
"terms": {
"script": "doc.patient_id.value +'#'+doc.medical_record_id.value",
//返回100分组数据份数据
"size":1000
}
}
}
}
ES批量插入-JSON:POST http://ip:port/索引库/_bulk
binary *.josn文件
ES分词查询:POST http://ip:port/索引库/_search
"query": {
"query_string": {
"query": "有限公司",
"fields": ["content"]
}
}
}
ES分词测试:POST http://ip:port/_analyze
{"text": "美国留给伊拉克的是一个烂摊子吗?","analyzer": "ik_max_word"}
ES查询所有索引详细结构数据:GET http://ip:port/index1,index2,index3...
ES统计查询: GET http://ip:port/index/_count
{
"query": {
"match":{
"字段":字段值
}
}
}
}
ES聚合统计:POST http://ip:port/index/_search
{
"size": 0,
"aggs": {
"count": { //名字随便起,聚合查询的名字
"value_count": { //聚合查询的类型
"field":"字段名" // 计算这个字段的总数;或者是script脚本:"script": "doc.sourceId +'#'+doc.destinationId"
}
}
}
}
// 聚合+查询条件
{
"query": {
"match": {
"active": true
}
},
"size": 0,
"aggs": {
"gp": {
"terms": {
"script": "doc.sourceId +'#'+doc.destinationId",
//返回100分组数据份数据
"size": 1
}
}
}
}
// 聚合distinct
{
"query": {
"match":{
"active":true
}
},
"size":0,
"aggs": {
"count":{
"cardinality":{
"script": "doc.sourceId +'#'+doc.destinationId"
}
}
}
}
ES相似查询探索
第一种 匹配查询,得分都一样,排序估计是按存储顺序排的(和MySQL like查询不一样)
GET http://ip:port/index/_search
{
"query": {
"wildcard": { "term" : "心脏病*"}
}
}
第二种 分成字 and逻辑就是包含三个字 根据每个字计算得分 得到一个总分
GET http://ip:port/index/_search
{
"query" : {
"match": {
"termFolded" : {
"query": "糖尿病",
"operator": "and"
}
}
}
}
第三种 类似MySQL的like查询,根据词进行匹配,并计算得分
GET http://ip:port/index/_search
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"termFolded": "糖尿病"
}
}
]
}
}
}