// bulk 批量导入api
POST /customer/external/_bulk
{"index":{"_id":"1"}}
{"name":"John Nash" }
{"index":{"_id":"2"}}
{"name":"Jane Nash" }
POST /_bulk
{"delete":{"_index":"website","_type":"blog","_id":"123"}}
{"create":{"_index":"website","_type":"blog","_id":"123"}}
{"title":"My first blog post"}
{"index":{"_index":"website","_type":"blog"}}
{"title":"My second blog post"}
{"update":{"_index":"website","_type":"blog","_id":"123"}}
{"doc":{"title":"My updated blog post"}}
POST bank/account/_bulk
{"index":{"_id":"1"}}
{"account_number":1,"balance":39225,"firstname":"Amber","lastname":"Duke","age":32,"gender":"M","address":"880 Holmes Lane","employer":"Pyrami","email":"amberduke@pyrami.com","city":"Brogan","state":"IL"}
{"index":{"_id":"6"}}
{"account_number":6,"balance":5686,"firstname":"Hattie","lastname":"Bond","age":36,"gender":"M","address":"671 Bristol Street","employer":"Netagy","email":"hattiebond@netagy.com","city":"Dante","state":"TN"}
{"index":{"_id":"13"}}
{"account_number":13,"balance":32838,"firstname":"Nanette","lastname":"Bates","age":28,"gender":"F","address":"789 Madison Street","employer":"Quility","email":"nanettebates@quility.com","city":"Nogal","state":"VA"}
{"index":{"_id":"18"}}
{"account_number":18,"balance":4180,"firstname":"Dale","lastname":"Adams","age":33,"gender":"M","address":"467 Hutchinson Court","employer":"Boink","email":"daleadams@boink.com","city":"Orick","state":"MD"}
{"index":{"_id":"20"}}
{"account_number":20,"balance":16418,"firstname":"Elinor","lastname":"Ratliff","age":36,"gender":"M","address":"282 Kings Place","employer":"Scentric","email":"elinorratliff@scentric.com","city":"Ribera","state":"WA"}
{"index":{"_id":"25"}}
{"account_number":25,"balance":40540,"firstname":"Virginia","lastname":"Ayala","age":39,"gender":"F","address":"171 Putnam Avenue","employer":"Filodyne","email":"virginiaayala@filodyne.com","city":"Nicholson","state":"PA"}
1、SearchAPlES 支持两种基本方式检索:一个是通过使用 REST request URI 发送搜索参数(uri+检索参数)另一个是通过使用 REST requestbody 来发送它们(uri+请求体)
GET bank/_search?q=*&sort=account_number:asc
GET bank/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"balance": "desc"
}
],
"from": 0,
"size": 5,
"_source": ["balance","firstname"]
}
- query 定义如何查询;- match_all 查询类型【代表查询所有的所有】, es 中可以在 query 中组合非常多的查询类型完成复杂查询- 除了 query 参数之外,我们也可以传递其它的参数以改变查询结果。如 sort,size;- from+size 限定,完成分页功能;- sort 排序,多字段排序,会在前序字段相等时后续字段内部排序,否则以前序为准
2)、返回部分字段
GET /bank/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"balance": {
"order": "desc"
}
}
],
"from": 0,
"size": 5,
"_source": ["balance","firstname"]
}
3)、match【匹配查询】
基本类型(非字符串),精确匹配match 返回 account_number=20 的数据:
GET /bank/_search
{
"query": {
"match": {
"account_number": 20
}
}
}
- 字符串,全文检索
最终查询出 address 中包含 Kings 单词的所有记录,当搜索字符串类型的时候,会进行全文检索,并且每条记录有相关性得分。
GET /bank/_search
{
"query": {
"match": {
"address": "Kings"
}
}
}
- 字符串,多个单词(分词+全文检索)
全文检索按照评分进行排序,会对检索条件进行分词匹配
GET /bank/_search
{
"query": {
"match": {
"address": "Mill Lane"
}
}
}
最终查询出 address 中包含 Mill 或者 Lane 或者 Mill Lane 的所有记录,并给出相关性得分
4)、match_phrase 【短语匹配】
将需要匹配的值当成一个整体单词(不分词)进行检索
举个栗子:查出 address 中包含 mill road 的所有记录,并给出相关性得分
GET /bank/_search
{
"query": {
"match_phrase": {
"address": "mill road"
}
}
}
5)、multi_match 【多字段匹配】
举例:state 或 address 包含 mill
GET /bank/_search
{
"query": {
"multi_match": {
"query": "mill",
"fields": ["address","state"]
}
}
}
多字段查询的时候也会进行分词查询,得分最高的在前面:
GET /bank/_search
{
"query": {
"multi_match": {
"query": "mill movico",
"fields": ["address","city"]
}
}
}