美文网首页搜索引擎
Elasticsearch基本搜索

Elasticsearch基本搜索

作者: TZX_0710 | 来源:发表于2021-04-30 10:26 被阅读0次

    Elasticsearch 数据搜索

    Elasticsearch基于JSON文档或者基于URL的请求进行搜索。

    Elasticsearch可以是Get请求也可以是Post请求,在搜索的过程可以搜索整个集群,也可以通过指定索引或类型的名称来限制范围。

    Elasticsearch搜索的基本请求模块

    query 搜索请求的重要组成部分,它配置了基于评分返回的最佳文档,包括了你不希望返回哪些文档。

    size 代表了返回文档数量

    from 和size一起使用 from用于分页操作。为了确定第二页的10项结果,Elasticsearch必须获取前20项的计算结果。结果集不断增加,获取某些数据分页的代开会增高

    source 指定source字段如何返回,默认是返回所有的 _source字段,通过设置,将过滤返回的字段,如果索引的文档过大,而且无需结果中的全部内容就是用该功能。

    sort 默认的排序基于文档的得分,如果不关心得分,或者期望许多文档部门的得分相同,添加额外的sort将帮助控制哪些文档被返回

    在Elasticsearch的版本1之前,field用于过滤返回字段的组件。其行为就是返回可用的存储字段。如果没有存储字段可以使用。字段就从_source返回。如果在索引中没有显示的存储字段,最好使用_source模块
    es导入外部json数据
    curl -H "Content-Type:appliaction/json" -XPOST localhost:9200/index/mapping/_bulk --data-binary @account.json
    data:

    image.png
    example1:分页
    {
      "from": 0, #从0开始
      "size": 10,#返回10条数据
      "_source": [
        "name",#返回name 
        "age"#返回source
      ],
      "query": {
        "match_all": {}
      }
    }
    
    example2 日期排序
    {
      "from": 0,
      "size": 10,
      "query": {
        "match_all": {}
      },
      "sort": [
        {
          "age": {
            "order": "desc"  #age字段进行排序
          }
        }
      ]
    }
    
    example3 通配符
    {
      "from": 0,
      "size": 10,
      "query": {
        "match_all": {}
      },
      "_source":{
        "includes": [
          "a*",#字段匹配a开头 *表示不做任何限制
          "cre*"字段匹配 cre开头
        ]
      }
    }
    
    回复的结构体
    {
      "took": 1, #查询所使用的毫秒数
      "timed_out": false,#表明是否有分片超时,也就是说是否只返回了一部分结果
      "_shards": {#成功响应请求和未能成功响应请求的分片数量
        "total": 1, 总数量
        "successful": 1,成功响应的数量
        "skipped": 0, 
        "failed": 0#失败的数量
      },
      "hits": {  #回复中包含了命中的键,其值是命中文档的数组
        "total": 65, #该搜索请求所有匹配结果的数量
        "max_score": 1.0, 
        "hits": [#命中关键词元素中的命中文档数组
          {
            "_index": "test_index",#结果文档的索引
            "_type": "type",#结果文档的Elasticsearch类型
            "_id": "AXkXLTgUjAep6aBo4z53",#结果文档的ID
            "_score": 1.0,结果的相关性得分
            "_source": { #请求的_source字段 如果为过滤则默认所有
              "account_number": 32,
              "balance": 48086,
              "firstname": "Dillard",
              "lastname": "Mcpherson",
              "age": 34,
              "gender": "F",
              "address": "702 Quentin Street",
              "employer": "Quailcom",
              "email": "dillardmcpherson@quailcom.com",
              "city": "Veguita",
              "state": "IN"
            }
          }
        ]
      }
    }
    

    如果没有存储文档的_sources或者fields,那么将无法从文档中获取数值
    ES5启用的一些查询
    filtered 使用bool查询,也支持filter子句。
    and must在bool查询中 使用子句。
    or should在bool查询中 使用子句。
    missing 使用否定的exists查询。(也missing从query_string查询中删除)
    limit 改用terminate_after参数。
    fquery 过滤器和查询合并后过时。
    query 过滤器和查询合并后过时。
    query_binary 没有文件,已被删除。
    filter_binary 没有文件,已被删除

    相关文章

      网友评论

        本文标题:Elasticsearch基本搜索

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