美文网首页
elasticSearch8 接口

elasticSearch8 接口

作者: Mracale | 来源:发表于2023-03-09 17:29 被阅读0次

    1.创建索引,设置列类型
    特殊查询API记录:
    存在一些版本偏差,自己找对应的文档:
    场景一:电子商城,我们会根据用户输入的内容去查询,然后把score高的内容优先展示,但是当我们加上价格之后,我们的目的是即想让商品按照价格排序,又想让商品的匹配度从高到低去排序。可以用:QueryBuilders.matchPhraseQuery

    PUT /recruit
    {
      "mappings": {
        "properties": {
          "name": {
            "type": "text"
          },
          "age":{
            "type": "integer"
          },
          "birthday":{
            "type": "date"
          }
        }
      }
    }
    

    2.获取索引数据

    GET recruit
    

    3.插入数据

    PUT /recruit/_doc/1
    {
      "name": "史林伟",
      "age": 25,
      "birthday": "1997-08-19"
    }
    

    4.查看es的健康值

    GET _cat/health
    

    5.查询所有的信息

    GET _cat/indices?v
    

    6.修改数据 version会递增,result也会改变

    # 修改数据的第一种方式不建议这样去做,因为这是覆盖的做法
    
    POST /recruit/_doc/1/_update
    {
      "doc":{
        "name": "slw",
        "age": 27,
        "birthday": "1997-08-19"
      }
    }
    
    
    
    # 可以用post去更新数据,这样可以做到只更新json中的一条数据
    
    POST userdata/_update/1
    {
      "doc":{
        "name": "张三1"
      }
    }
    

    7.删除数据,根据请求路径去处理,删除数据或者删除索引

    DELETE /recruit/_doc/1
    

    8.查询

    # 根据id获取数据
    GET userdata/_doc/1
    
    # 模糊查询
    GET userdata/_search?q=name:张三
    
    # 1. 模糊查询
    GET userdata/_search
    {
      "query": {
        "match": {
          "name": "张三"
        }
      }
    }
    
    #2.指定es返回的字端
    GET userdata/_search
    {
      "query": {
        "match": {
          "name": "张三"
        }
      },
      "_source": ["name","age"]
    }
    
    #3. 排序
    GET userdata/_search
    {
      "query": {
        "match": {
          "name": "张三"
        }
      },
      "_source": ["name","age"],
      "sort": [
        {
          "age": {
            "order": "asc"
          }
        }
      ]
    }
    
    # 4. 分页查询 from:从第几条开始查询,size:查询多少条
    GET userdata/_search
    {
      "query": {
        "match": {
          "name": "张三"
        }
      },
      "_source": ["name","age"],
      "sort": [
        {
          "age": {
            "order": "asc"
          }
        }
      ],
      "from": 0,
      "size": 1
    }
    
    # 5.多条件查询 
    # must(and) 所有条件都要满足
    # should(or) 只要满足其中一个即可
    # must_not(not) 必须不满足这些条件
    GET userdata/_search
    {
      "query": {
        "bool": {
          "must_not": [
            {
              "match": {
                "name": "张三"
              }
            },
            {
              "match": {
                "age": 24
              }
            }
          ]
        }
      }
    }
    
    # 6. 过滤器 filter,可以写范围查询
    GET userdata/_search
    {
      "query": {
        "bool": {
          "filter": [
            {
              "range": {
                "age": {
                  "gte": 20,
                  "lte": 23
                }
              }
            }
          ]
        }
      }
    }
    
    # 7.多条件匹配 , 多个条件使用空格隔开,只要满足其中之一就行,可以通过score去进行基本判断
    GET userdata/_search
    {
      "query": {
        "match": {
          "tags": "车 男"
        }
      }
    }
     
    # 8.精确查询:倒排索引查询(其实就是利用term api的不会拆分搜索词的原因进行的查询)
    
    # query和term的区别:term不会被拆分搜索词、query会拆分搜索词
    
    # 关于分词器的几种不同分析方式
    #   1.keyword 不会被分词器解析成多个片段
    #   2.stabdard 这个是普通模式,就是按照分词器字典去正常分析就行
    GET userdata/_search
    {
      "query": {
        "term": {
          "name": "张"
        }
      }
    }
    
    GET _analyze
    {
      "analyzer": "standard",
      "text": "我是张三"
    }
    
    # 多条件精确查询
    GET userdata/_search
    {
      "query": {
        "bool": {
          "should": [
            {
              "term": {
                "age": 23
              }
            },
            {
              "term": {
                "age": 28
              }
            }
          ]
        }
      }
    }
    
    # 高亮查询
    GET java_2/_search
    {
      "query": {
        "match": {
          "name": "张"
        }
      },
      "highlight": {
        "fields": {
          "name": {
            "pre_tags": "<p class='key' stye='red'>",
            "post_tags": "</p>"
          }
        }
      }
    }
    
    
    
    
    
      
    
    

    相关文章

      网友评论

          本文标题:elasticSearch8 接口

          本文链接:https://www.haomeiwen.com/subject/fstzldtx.html