匹配查询
- {
- "query": {
- "match": {
- "category": "小米"
- }
- }
- }
查询全部
- {
- "query": {
- "match_all": {}
- }
- }
查询第二页的数据,并且只获取title字段。
- {
- "query": {
- "match_all": {},
- "from": 2,
- "size": 2,
- "_source": [
- "title"
- ]
- }
- }
- {
- "query": {
- "match_all": {},
- "from": 2,
- "size": 2,
- "_source": [
- "title"
- ],
- "sort": {
- "price": {
- "order": "desc"
- }
- }
- }
- }
- {
- "query": {
- "bool": {
- "must": [
- {
- "match": {
- "category": "小米"
- }
- },
- {
- "match": {
- "price": "1999"
- }
- }
- ]
- }
- }
- }
- {
- "query": {
- "bool": {
- "should": [
- {
- "match": {
- "category": "小米"
- }
- },
- {
- "match": {
- "category": "华为"
- }
- }
- ]
- }
- }
- }
大于5000的数据查询
- {
- "query": {
- "bool": {
- "should": [
- {
- "match": {
- "category": "小米"
- }
- },
- {
- "match": {
- "category": "华为"
- }
- }
- ],
- "filter": {
- "range": {
- "price": {
- "gt": 5000
- }
- }
- }
- }
- }
- }
match全文检索匹配
当保存文档数据时,es会将数据文字进行进行分词、拆解操作,并将拆解后的数据保存到倒排索引当中,因此即使使用数据的一部分也可以查询到数据,这种检索方式称为全文检索。
案例:小华,将会被拆解为小、华,符合条件的都可查询出来。
- {
- "query": {
- "match": {
- "category": "小华"
- }
- }
- }
match_phrase完全匹配
案例:则匹配小华。
- {
- "query": {
- "match_phrase": {
- "category": "小华"
- }
- }
- }
对查询结果当中的category字段高亮显示。
- {
- "query": {
- "match_phrase": {
- "category": "小米"
- }
- },
- "highlight": {
- "fields": {
- "category": {}
- }
- }
- }
按照价格分组,并且只获取统计结果
- {
- "aggs": { // 聚合操作
- "price_group": { // 名称,随意起名
- "terms": { // 分组
- "field": "price" // 分组字段
- }
- }
- },
- "size": 0 // 没有原始数据了,只有统计结果
- }
不分组,统计价格平均值
- {
- "aggs": {
- "price_avg": {
- "avg": { // 平均值
- "field": "price"
- }
- }
- },
- "size": 0
- }
创建索引:
text分词
keyword关键字需完全匹配
index索引:true可被索引,false不可被索引
- {
- "properties": {
- "name": {
- "type": "text",
- "index": true
- },
- "sex": {
- "type": "keyword",
- "index": true
- },
- "tel": {
- "type": "text",
- "index": false
- }
- }
- }