本文分成兩部分,一部分介紹在elasticsearch中索引的創建,第二部分介紹elasticsearch的基本操作.
(1)首先我們創建一個index:
1.在elasticsearch的webui界面中有一個add index中可以創建索引,填入所以的分片數和備份數即可。
索引創建好了,接下來就是創建類別和文檔,如下我創建一個person表,包含name,age,示例如:
{
"man":{
"properties":{
"name":{
"type":"text"
},
"age":{
"type":"Integer"
}
}
}
}
然後可以用“put”預防將上述的json提交至master節點地址:127.0.0.1/person/man2.當然我們也可以基於put語法直接創建索引類別文檔,同樣基於“put”的語法,在提交的json中創建索引。
{
"setting":{
"number_of_shards":3,//分片數
"number_of_replicas:":1//備份數
},
"mappings":{
"properties":{
"man":{
"name":{
"type":"text"
},
"age":{
"type":"integer"
}
}
}
}
}
訪問master節點地址 :127.0.0.1/person即可。
(2)數據的插入:
(1)基於”post“語法,訪問127.0.0.1/person/man,提交一條記錄至創建的person表中:
{ "name":"網絡", "age":30 }
插入數據後,數據表中會自動生成一個id,如果我們想自己生成id該如何做?那也很方便訪問127.0.0.1/person/man/1,以put語法提交json就ok了。
{
"name":"網絡2",
"age":34
}
這裏的id=1,即指定文檔1(2)數據的刪除比較簡單,以delete方式訪問索引、類別、文檔即可
(3)查詢和更新的查找原理類似,主要在一些語法方面的區別,下面將列一些常見的操作。
group by聚合
{
"aggs": {
"group_by_name": {
"terms": {
"field": "country"
}
}
}
}//count 字段爲keywords
查詢年齡字段爲30的數據並以倒序排列
{
"query": {
"match": {
"age": 30
}
},
"sort": [
{
"date": {
"order": "desc"
}
}
]
}//date不是text 類型
{
"query": {
"match": {
"name": "網絡"
}
},
"sort": [
{
"date": {
"order": "desc"
}
}
]
}//模糊匹配
{
"query": {
"match_phrase": {
"name": "網絡"
}
},
"sort": [
{
"date": {
"order": "desc"
}
}
]
}//精確匹配
{
"query": {
"multi_match": {
"query": "5",
"fields": [
"name"
]
}
},
"sort": [
{
"date": {
"order": "desc"
}
}
]
}//多個條件或查詢,查詢字段類型爲text
{
"query": {
"query_string": {
"query": "(5 AND he)OR 網絡"
}
,"fields": [
"name"
]
},
"sort": [
{
"date": {
"order": "desc"
}
}
]
}//語句查詢
結構化語句的查詢
{
"query": {
"term": {
"age": 30
}
},
"sort": [
{
"date": {
"order": "desc"
}
}
]
}
{
"query": {
"range": {
"age": {
"gt": "2",
"lte": "42"
}
}
},
"sort": [
{
"date": {
"order": "desc"
}
}
]
}
過濾器
{
"query": {
"bool": {
"filter": {
"term": {
"name": "5"
}
}
}
}
}
固定分數查詢
{
"query": {
"match": {
"name": "5"
}
}
}