建立结构

建People表

方法:PUT 发送地址:http://192.168.79.138:9200/people

{
	"setting": {
		"number_of_shards": 3,
		"number_of_replicas": 1
	},
	"mappings": {
		"man": {
			"properties": {
				"name": {
					"type": "text"
				},
				"country": {
					"type": "keyword"
				},
				"age": {
					"type": "integer"
				},
				"data":{
					"type": "date",
					"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
				}
			}
		}
	}
}

请输入图片描述

建book表

方法:PUT 发送地址:http://192.168.79.138:9200/book

{
	"setting": {
		"number_of_shards": 3,
		"number_of_replicas": 1
	},
	"mappings": {
		"novel": {
			"properties": {
				"word_count": {
					"type": "integer"
				},
				"author": {
					"type": "keyword"
				},
				"title": {
					"type": "text"
				},
				"publish_date":{
					"type": "date",
					"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
				}
			}
		}
	}
}

插入数据

指定ID插入数据到people.man

方法:PUT 发送地址http://192.168.79.138:9200/people/man/1

{
	"name": "F嘉阳",
	"country": "China",
	"age": 21,
	"date": "1990-05-18"
}

请输入图片描述

图形化查询检验

请输入图片描述

不指定ID插入数据到people.man

方法:PUT 发送地址http://192.168.79.138:9200/people/man/

{
	"name": "FJY",
	"country": "China",
	"age": 28,
	"date": "1990-05-18"
}

请输入图片描述

图形化查询检验

请输入图片描述

更新

更新字段数据

方法:POST 发送地址:http://192.168.79.138:9200/people/man/1/_update

{
	"doc": {
		"name": "符嘉阳"
	}
}

请输入图片描述

图形化查询检验

请输入图片描述

使用脚本语言更新数据

方法:POST 发送地址:http://192.168.79.138:9200/people/man/1/_update

{
	"script": {
		"lang": "painless",
		"inline": "ctx._source.age += 5"
	}
}

请输入图片描述

图形化查询检验

请输入图片描述

使用脚本语言分离参数更新数据

方法:POST 发送地址:http://192.168.79.138:9200/people/man/1/_update

{
	"script": {
		"lang": "painless",
		"inline": "ctx._source.age = params.age",
		"params": {
			"age": 21
		}
	}
}

请输入图片描述

图形化查询检验

请输入图片描述

删除

指定ID删除一行数据

方法:DELETE 发送地址:http://192.168.79.138:9200/people/man/1 请输入图片描述

图形化查询检验

请输入图片描述

删除表

方法:DELETE 发送地址:http://192.168.79.138:9200/people 请输入图片描述

查询

指定ID查询

方法:GET 发送地址:http://192.168.79.138:9200/book/novel/H5LbbWMBzFxBPWV2GG9d 请输入图片描述

查询所有

方法:GET 发送地址:http://192.168.79.138:9200/book/_search { "query": { "match_all": {} } }

请输入图片描述

指定查询结果大小

{
	"query": {
		"match_all": {}
	},
	"from": 1,
	"size": 1
}

请输入图片描述

查询

{
	"query": {
		"match": {
			"title": "Java"
		}
	}
}

指定查询结果排序方法

{
	"query": {
		"match": {
			"title": "Java"
		}
	},
	"sort": [
		{
			"publish_date": {
				"order": "desc"
			}
		}
	]
}

聚合

{
	"aggs": {
		"group_by_word_count": {
			"terms": {
				"field": "word_count"
			}
		}
	}
}

多字段聚合

{
	"aggs": {
		"group_by_word_count": {
			"terms": {
				"field": "word_count"
			}
		},
		"group_by_author": {
			"terms": {
				"field": "author"
			}
		}
	}
}

聚合

{
	"aggs": {
		"grades_by_word_count": {
			"stats": {
				"field": "word_count"
			}
		}
	}
}

模糊匹配(默认匹配法则)

{
	"query": {
		"match": {
			"title": "Java虚拟机"
		}
	}
}

习语匹配

{
	"query": {
		"match_phrase": {
			"title": "Java虚拟机"
		}
	}
}

多字段模糊匹配查询

{
	"query": {
		"multi_match": {
			"query": "F嘉阳",
			"fields": ["author","title"]
		}
	}
}

语法查询

{
	"query": {
		"query_string": {
			"query": "ElasticSearch AND 入门"
		}
	}
}

{
	"query": {
		"query_string": {
			"query": "(ElasticSearch AND 入门) OR PS"
		}
	}
}

语法查询指定字段

{
	"query": {
		"query_string": {
			"query": "ElasticSearch OR 瓦",
			"fields": ["title","author"]
		}
	}
}

结构化查询(指定字段)

{
	"query": {
		"term": {
			"word_count": 1000
		}
	}
}

{
	"query": {
		"term": {
			"author": "F嘉阳"
		}
	}
}

结构化查询(指定范围)

gte->大于等于 lte->小于等于 e->equal(等于)

{
	"query": {
		"range": {
			"word_count": {
				"gte": 1000,
				"lte": 2000
			}
		}
	}
}

结构化查询(指定日期范围)

{
	"query": {
		"range": {
			"publish_date": {
				"gte": "2018-01-01",
				"lt": "2018-12-31"
			}
		}
	}
}

结构化查询(指定当前时间)

{
	"query": {
		"range": {
			"publish_date": {
				"gte": "2018-01-01",
				"lte": "now"
			}
		}
	}
}

子条件查询,使用filter

使用filter过滤器后产生缓存,下次查询速度更快

{
	"query": {
		"bool": {
			"filter": {
				"term": {
					"word_count": 1000
				}
			}
		}
	}
}

复合条件查询-固定分数查询

{
	"query": {
		"constant_score": {
			"filter": {
				"match": {
					"title": "Java"
				}
			}
		}
	}
}

复合条件查询-指定分数查询

{
	"query": {
		"constant_score": {
			"filter": {
				"match": {
					"title": "Java"
				}
			},
			"boost": 2
		}
	}
}

复合条件查询-布尔查询-指定应当满足的条件(满足其一即可)

{
	"query": {
		"bool": {
			"should": [
					{
						"match": {
							"author": "F嘉阳"
						}
					},
					{
						"match": {
							"title": "Java"
						}
					}
				]
		}
	}
}

复合条件查询-布尔查询-指定必须满足的条件(两个都必须匹配)

{
	"query": {
		"bool": {
			"must": [
					{
						"match": {
							"author": "F嘉阳"
						}
					},
					{
						"match": {
							"title": "Java"
						}
					}
				]
		}
	}
}

复合条件查询-布尔查询-过滤器

{
	"query": {
		"bool": {
			"must": [
					{
						"match": {
							"author": "F嘉阳"
						}
					},
					{
						"match": {
							"title": "PS"
						}
					}
				],
				"filter": [
						{
							"term": {
								"word_count": 700
							}
						}
					]
		}
	}
}

复合条件查询-must_not

{
	"query": {
		"bool": {
			"must_not": {
				"term": {
					"author": "F嘉阳"
				}
			}
		}
	}
}
最后修改:2023 年 09 月 07 日
如果觉得我的文章对你有用,请随意赞赏