1.添加Document
PUT /<index>/<type>/<ID>
现在创建一个名为user的document,
put /index1/user/
ES不用显式的创建文档,如果在创建document之前没有创建index1,则ES会创建一个名为index1的索引。
2.查询索引中的全部数据
get index4/_search
{
"query":{
"match_all": {}
}
"sort":{
"account_number":"asc"
}
}
查询全部数据,并且按照account_number字段正序排序
返回json中的hits 就是ES搜索命中的数据
3.查询语句介绍
基本参数选项:query、from、size、sort、_source
GET /bank/_search
{
"query": {"match_all": {}},
"from": 10,
"size": 2,
"sort": [
{"balance": { "order": "desc" } }
],
"_source":["account_number","balance"]
}
query:指定查询条件,这里使用{ “match_all”: {} }表示查询条件匹配所有记录
from:表示从第n条匹配记录开始取值,默认为0
size:表示匹配条数,默认10
sort:表示排序,这里使用{ “balance”: { “order”: “desc” }},表示按balance降序排序,这里也可以写成[{ “balance”: “desc” }]
_source:表示查询字段,这里使用[“account_number”, “balance”]表示返回结果中,只需要返回"account_number", "balance"两个字段即可。默认返回所有字段。
**
4.查询匹配条件(match)
**
GET /bank/_search
{
"query": {
"match": {"account_number": 20}
}
}
这里需要注意的是,match只能匹配分词字段。
5.## match 查询
GET /bank/_search
{
"query": {
"match": {"address": "mill lan"}
}
}
如果文档中包含了 address= mill 或者 address = lan,则查询命中,原因是 address 被分词了,实际存的是 mill 和 lan 两个字段。
6.match_phrase查询: 短语查询
类似 match 查询, match_phrase 查询首先将查询字符串解析成一个词项列表,然后对这些词项进行搜索,但只保留那些包含 全部 搜索词项,且 位置 与搜索词项相同的文档,且中间不许夹杂其他词 。 比如对于 quick fox 的短语搜索可能不会匹配到任何文档,因为没有文档包含的 quick 词之后紧跟着 fox 。
GET /bank/_search
{
"query": {
"match_phrase": {"address": "mill lane"}
}
}
查询包含短语 mill lane 的文档,如果 address 中有等于 mill 或者 lane 的文档,不会查询命中。
7.bool and关系查询:查询 address 中同时包含 “mill” 和 “lane” 的document
GET /bank/_search
{
"query": {
"bool": {
"must": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}
8.bool or 关系查询:查询 address 中包含 “mill” 或者 “lane” 的document
GET /bank/_search
{
"query": {
"bool": {
"should": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}
9.bool and关系查询:查询 address 中同时包含 “mill” 和 “lane” 的document
GET /bank/_search
{
"query": {
"bool": {
"must": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}
10.bool not关系查询:查询 address 中即不存在 “mill” 也不存在 “lane” 的document
GET /bank/_search
{
"query": {
"bool": {
"must_not": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}
11.bool 组合查询:查询 age=40,state!=“ID” 的document
GET /bank/_search
{
"query": {
"bool": {
"must": [
{ "match": { "age": 40 } }
],
"must_not": [
{ "match": { "state": "ID" } }
]
}
}
}
12.bool filter查询:查询 20000<=balance<=30000 的document
GET /bank/_search
{
"query": {
"bool": {
"filter":{
"range": {
"balance": {
"gte": 20000,
"lte": 30000
}
}
}
}
}
}