Đang tải... (xem toàn văn)
Create Index and check index PUT customer?pretty GET _catindices?v Insert a customer with id = 1 and name is Bien Nguyen PUT customer_doc1?pretty { name: Bien Nguyen } Get information of abow insert GET customer_doc1?pretty Insert with not specify id and ES will random an id POST customer_doc?pretty { name: Bien Nguyen } Delete an index and check index DELETE customer?pretty GET _catindices?v Create and insert again PUT customer PUT customer_doc1 { name: Bien Nguyen } Replace content of name field PUT customer_doc1 { name: Bien Nguyen ver 2 } if we change id, it creates a new document with id = 2 PUT customer_doc2 { name: Bien Nguyen }
# Create Index and check index PUT /customer?pretty GET /_cat/indices?v # Insert a customer with id = and name is "Bien Nguyen" PUT /customer/_doc/1?pretty { "name": "Bien Nguyen" } # Get information of abow insert GET /customer/_doc/1?pretty # Insert with not specify id and ES will random an id POST /customer/_doc/?pretty { "name": "Bien Nguyen" } # Delete an index and check index DELETE /customer?pretty GET /_cat/indices?v # Create and insert again PUT /customer PUT /customer/_doc/1 { "name": "Bien Nguyen" } # Replace content of name field PUT /customer/_doc/1 { "name": "Bien Nguyen ver 2" } # if we change id, it creates a new document with id = PUT /customer/_doc/2 { "name": "Bien Nguyen" } #To update document we use POST # This will update customer have id =2 with name change to Mr Sea POST /customer/_doc/2/_update?pretty { "doc": {"name": "Mr Sea"} } # We can change a name at the same time add an age field POST /customer/_doc/2/_update?pretty { "doc": { "name": "Mr SeaSea", "age": 22 } } # We also can change document with script POST /customer/_doc/2/_update?pretty { "script": "ctx._source.age +=1" } # Delete document DELETE /customer/_doc/1?pretty DELETE /customer/_doc/2?pretty DELETE /customer/_doc/K76gZGwBGxJL9xkwYav_?pretty # Batch using _bulk # Do action in bulk operation POST /customer/_doc/_bulk?pretty {"index":{"_id":"1"}} {"name": "Bien Nguyen" } {"index":{"_id":"2"}} {"name": "Mr Sea" } # POST /customer/_doc/_bulk?pretty {"update":{"_id":"1"}} {"doc": { "name": "update Bien Nguyen become Biennt" } } {"delete":{"_id":"2"}} GET /customer/_search?pretty ###################End customer######################### # Begin using a bank data # Search bank data and sort by account_number # Using query match_all to search all data # Sort (arrray behind) all data with account_number field by acs GET /bank/_search { "query": { "match_all": {} }, "sort": [ { "account_number": { "order": "asc" } } ] } ##### Query ###########3 # Query begin with GET -> index/_search -> query keywork # -> condition # Here is simplest query example - Search all document in index GET /bank/_search { "query": { "match_all": {} } } # After query, we cam use size like sort in abow example # default size = 10, here we set to GET /bank/_search { "query": { "match_all": {} }, "size": } #Search and show 10 document from result have index 10 GET /bank/_search { "query": { "match_all": {} }, "from": 10, "size": 10 } #Get all and sort by balance desc, that like abow example GET /bank/_search { "query": { "match_all": {} }, "sort": [ { "balance": { "order": "desc" } } ] } # Search and show sepecific field: account_number and balance GET /bank/_search?pretty { "query": { "match_all": {} }, "_source": ["account_number", "balance"] } # Search with condition: account_number = 20 GET /bank/_search?pretty { "query": { "match": { "account_number": 20 } } } # Same with address = mill GET /bank/_search?pretty { "query": { "match": { "address": "mill" } } } # Seach document has address mill or lane GET /bank/_search?pretty { "query": { "match": { "address": "mill lane" } } } # Search phrase: document has mill and lane word GET /bank/_search?pretty { "query": { "match_phrase": { "address": "mill lane" } } } # We can also use bool to group more condition # must: and , should: or, must_not: not, filter: like must be score of query will be ignorerd | require array behind GET /bank/_search?pretty { "query": { "bool": { "must": [ {"match": { "address": "mill" }}, { "match": { "address": "lane" } } ] } } } GET /bank/_search?pretty { "query": { "bool": { "should": [ { "match": { "address": "mill" } }, { "match": { "address": "lane" } } ] } } } GET /bank/_search?pretty { "query": { "bool": { "must_not": [ { "match": { "address": "mill" } }, { "match": { "address": "lane" } } ] } } } # Using document must have age = 40 and must_not have state = ID GET /bank/_search?pretty { "query": { "bool": { "must": [ { "match": { "age": "40" } } ], "must_not": [ { "match": { "state": "ID" } } ] } } } # POST /_search?pretty { "query": { "bool" : { "must" : { "term" : { "user" : "kimchy" } }, "filter": { "term" : { "tag" : "tech" } }, "must_not" : { "range" : { "age" : { "gte" : 10, "lte" : 20 } } }, "should" : [ { "term" : { "tag" : "wow" } }, { "term" : { "tag" : "elasticsearch" } } ], "minimum_should_match" : 1, "boost" : 1.0 } } } ############3 Filter############## # Search all data and filter balance between 20.000-30.000 GET /bank/_search?pretty { "query": { "bool": { "must": { "match_all": {} }, "filter": { "range": { "balance": { "gte": 20000, "lte": 30000 } } } } } } ########Aggregations#############3 #SELECT state, COUNT(*) FROM bank GROUP BY state ORDER BY COUNT(*) DESC LIMIT 10; # Set size = to just see aggregations GET /bank/_search { "size": 0, "aggs": { "group_by_state": { "terms": { "field": "state.keyword", "size": 10 } } } } # Calculate average balance by state GET /bank/_search { "size": 0, "aggs": { "group_by_state": { "terms": { "field": "state.keyword" }, "aggs": { "average_balance":{ "avg": { "field": "balance" } } } } } } # GET /bank/_search { "size": 0, "aggs": { "group_by_state": { "terms": { "field": "state.keyword", "order": { "average_balance": "desc" } }, "aggs": { "average_balance": { "avg": { "field": "balance" } } } } } } # Aggregation with age (20-29)(30-39)(40-49), then gender, then calculate average balance GET /bank/_search { "size": 0, "aggs": { "group_by_age": { "range": { "field": "age", "ranges": [ { "from": 20, "to": 29 }, { "from": 30, "to": 39 }, { "from": 40, "to": 49 } ] }, "aggs": { "group_by_gender": { "terms": { "field": "gender.keyword" }, "aggs": { "average_balance": { "avg": { "field": "balance" } } } } } } } }