baobao索引的内容
image.png

查询匹配

  • match:匹配(会使用分词器解析(先分析文档,然后进行查询))
  • _source:过滤字段
  • sort:排序
  • form、size 分页 form 从第几条数据开始 size 返回几条数据

    1. GET /baobao/_search
    2. {
    3. "query": {
    4. "match": {
    5. "name": "包子"
    6. }
    7. }
    8. , "_source": ["name"]
    9. , "sort": [
    10. {
    11. "name.keyword": {
    12. "order": "desc"
    13. }
    14. }
    15. ]
    16. , "from": 0
    17. , "size": 1
    18. }

    image.png
    sort 排序
    因为name的type是text, text或annotated_text字段doc_values默认为false。
    简单理解,就是text字段作为一个整体,默认没有索引。
    不过text分词之后的keyword是有索引的,因而可以对name.keyword进行聚合。
    也可以set fielddata=true,不过不推荐。

    多条件查询(Bool)

  • must 相当于 and

  • should 相当于 or
  • must_not 相当于 not (… and …)
  • filter 过滤

    1. GET /baobao/_search
    2. {
    3. "query": {
    4. "bool": {
    5. "must": [
    6. {
    7. "match": {
    8. "name": "包子"
    9. }
    10. },{
    11. "match": {
    12. "age": "12"
    13. }
    14. }
    15. ],"filter": [
    16. {"range": {
    17. "age": {
    18. "gte": 10, //gte大于等于 gt 大于
    19. "lte": 20 //lte小于等于 lt 小于
    20. }
    21. }}
    22. ]
    23. }
    24. }
    25. }

    image.png

    匹配数组

  • 貌似不能与其它字段一起使用

  • 可以多关键字查(空格隔开)— 匹配字段也是符合的
  • match 会使用分词器解析(先分析文档,然后进行查询)
  • 搜词

    1. GET /baobao/_search
    2. {
    3. "query": {
    4. "match": {
    5. "tags": "高 好吃"
    6. }
    7. }
    8. }

    image.png

    精确查询

  • term 直接通过 倒排索引 指定词条查询

  • 适合查询 number、date、keyword ,不适合text

    1. GET /baobao/_search
    2. {
    3. "query": {
    4. "term": {
    5. "name.keyword": {
    6. "value": "包子"
    7. }
    8. }
    9. }
    10. }

    image.png

    text和keyword

  • text:

    • 支持分词全文检索、支持模糊、精确查询,不支持聚合,排序操作;
    • text类型的最大支持的字符长度无限制,适合大字段存储;
  • keyword:
    • 不进行分词直接索引、支持模糊、支持精确匹配,支持聚合、排序操作。
    • keyword类型的最大支持的长度为——32766个UTF-8类型的字符,可以通过设置ignore_above指定自持字符长度,超过给定长度后的数据将不被索引,无法通过term精确匹配检索返回结果

      高亮查询

      ```json GET /baobao/_search { “query”: { “match”: { “name”: “包子” } } , “highlight”: { “fields”: { “name”: {} } } }

// 自定义前缀和后缀 GET /baobao/_search { “query”: { “match”: { “name”:”包子” } } , “highlight”: { “pre_tags”: “

“, “post_tags”: “

“, “fields”: { “name”: {} } } } ``` image.png