ElasticSearch基础篇-条件查询与映射

ElasticSearch基础篇二

条件查询

GET http://10.192.193.98:9200/shopping/_search?q=title:小米手机
  • q:代表查询条件

响应结果

{
    "took": 772,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 4,
            "relation": "eq"
        },
        "max_score": 0.42144203,
        "hits": [
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "NunonIkBDJDpQI3ST7tm",
                "_score": 0.42144203,
                "_source": {
                    "title": "小米手机",
                    "category": "小米",
                    "images": "http://www.gulixueyuan.com/xm.jpg",
                    "price": 3999.00
                }
            },
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "N-nonIkBDJDpQI3SXrt6",
                "_score": 0.42144203,
                "_source": {
                    "title": "小米手机",
                    "category": "小米",
                    "images": "http://www.gulixueyuan.com/xm.jpg",
                    "price": 3999.00
                }
            },
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "OOnonIkBDJDpQI3SbLvp",
                "_score": 0.42144203,
                "_source": {
                    "title": "小米手机",
                    "category": "小米",
                    "images": "http://www.gulixueyuan.com/xm.jpg",
                    "price": 3999.00
                }
            },
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "OenonIkBDJDpQI3ScbtO",
                "_score": 0.42144203,
                "_source": {
                    "title": "小米手机",
                    "category": "小米",
                    "images": "http://www.gulixueyuan.com/xm.jpg",
                    "price": 3999.00
                }
            }
        ]
    }
}

由于在域名后面添加查询条件不是很方便,所以我们一般使用json格式发送查询条件

匹配查询
GET http://10.192.193.98:9200/shopping/_search

{
    "query":{
        "match":{
            "category":"小米"
        }
    }
}
  • query:代表查询条件
  • match:匹配查询
全量查询
GET http://10.192.193.98:9200/shopping/_search

{
    "query":{
        "match_all":{
            
        }
    }
}
  • match_all:匹配所有
分页查询
GET http://10.192.193.98:9200/shopping/_search
{
    "query":{
        "match_all":{

        }
    },
    "from":0,
    "size":2
}
  • from:起始位置 (页码-1)*每页数据条数
  • size: 分页大小
字段过滤
GET http://10.192.193.98:9200/shopping/_search

{
    "query":{
        "match_all":{

        }
    },
    "_source":[
        "title"
    ]
}
  • _source:设置需要返回的字段
排序
GET http://10.192.193.98:9200/shopping/_search

{
    "query":{
        "match_all":{

        }
    },
    "sort":{
        "price":{
            "order":"desc"
        }
    }
}
  • sort:设置排序
  • order:排序方式 asc desc
多条件查询
GET http://10.192.193.98:9200/shopping/_search

{
    "query":{
        "bool":{
            "must":[
                {
                    "match":{
                        "category":"小米"
                    }
                },
                {
                    "match":{
                        "title":"小米手机"
                    }
                }
            ]
        }
    }
}
  • bool:用于构建复杂查询的查询类型。它允许你组合多个查询条件,bool 查询由三个部分组成
    • must:所有的查询条件都必须匹配才会返回文档。
    • must_not:所有的查询条件都不能匹配才会返回文档。
    • should:至少有一个查询条件匹配,但不是必须的
GET http://10.192.193.98:9200/shopping/_search

{
    "query":{
        "bool":{
            "should":[
                {
                    "match":{
                        "category":"小米"
                    }
                },
                {
                    "match":{
                        "category":"华为"
                    }
                }
            ]
        }
    }
}
范围查询
GET http://10.192.193.98:9200/shopping/_search

{
    "query":{
        "bool":{
            "should":[
                {
                    "match":{
                        "category":"小米"
                    }
                },
                {
                    "match":{
                        "category":"华为"
                    }
                }
            ],
            "filter":{
                "range":{
                    "price":{
                        "gt":2598
                    }
                }
            }
        }
    }
}
  • filter:一种用于限制搜索结果的查询子句,它用于过滤掉不符合特定条件的文档,而不会对相关性进行计算,过滤器(filter)不会影响搜索结果的相关性得分。相比于查询,过滤器更适合用于筛选文档
  • range:设置范围
完全匹配
GET http://10.192.193.98:9200/shopping/_search

{
    "query":{
        "match_phrase":{
            "category":"小"
        }
    }
}
  • match_phrase:代表完全匹配,不会对查询条件中的内容进行分词

❗️如果使用match则为全文检索模式,会对查询条件中的内容进行分词,返回包含具有查询条件分词后结果

高亮查询
GET http://10.192.193.98:9200/shopping/_search

{
    "query":{
        "match":{
            "category":"小米"
        }
    },
    "highlight":{
        "fields":{
            "category":{}
        }
    }
}

  • highlight:设置高亮字段
聚合查询
GET http://10.192.193.98:9200/shopping/_search

{
    "aggs":{
        "price_group":{//为操作起名price_group
            "terms":{ 
                "field":"price"
            }
        },
        "price_avg":{
            "avg":{
                "field":"price"
            }
        }
    },
    "size":0
}
  • aggs:聚合操作
  • terms:分组
  • avg:求平局值

响应结果

"aggregations": {
        "price_group": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
                {
                    "key": 3999.0,
                    "doc_count": 4
                },
                {
                    "key": 1999.0,
                    "doc_count": 1
                },
                {
                    "key": 2599.0,
                    "doc_count": 1
                },
                {
                    "key": 2999.0,
                    "doc_count": 1
                }
            ]
        },
        "price_avg": {
            "value": 3370.4285714285716
        }
    }

映射

创建映射
PUT http://10.192.193.98:9200/user/_mapping

{
    "properties":{
        "name":{
            "type":"text",
            "index":true
        },
        "sex":{
            "type":"keyword",
            "index":true
        },
        "tel":{
            "type":"keyword",
            "index":false
        }
    }
}
  • 映射类似于mysql中的表结构约束
  • text:文本类型,可以进行全文检索,对查询条件关键字分词匹配
  • keyword:关键字,作为一个整体,不会分词
  • index:是否可被索引,如果为false则该字段无法被查询
查询映射
GET http://10.192.193.98:9200/user/_mapping

你可能感兴趣的:(ElasticSearch,elasticsearch,搜索引擎)