美文网首页
ES 1查询

ES 1查询

作者: 吴国友 | 来源:发表于2020-08-13 20:55 被阅读0次

    所有查询

    GET /item/_search
    {
      "query": {
        "match_all": {}
      }
    }
    

    匹配查询(match)

    match类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是or的关系

    or关系

    GET /item/_search
    {
      "query": {
        "match": {
          "title": "SpringData Es2"
        }
      }
    }
    

    and关系

    GET /item/_search
    {
      "query": {
        "match": {
          "title": {
            "query": "SpringData Es2",
            "operator": "and"
          }
        }
      }
    }
    

    查询出来的信息

    {
      "took": 0,//毫秒
      "timed_out": false,//是否超时
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {//跟查询有关的信息
        "total": 1,//条数
        "max_score": 2.2548006,//文档得分
        "hits": [//满足条件的列表
          {
            "_index": "item",//索引
            "_type": "item",//文档类型
            "_id": "2",//id
            "_score": 2.2548006,//单条得分
            "_source": {//源数据
              "id": 2,
              "title": "SpringData Es2",
              "content": "今天我们使用SpringData ES完成Job搜索功能2"
            }
          }
        ]
      }
    }
    

    or和and之间关系

    在or与and间二选一有点过于非黑即白。如果用户给定的条件分词有5个查询词项,想查找包含其中4个次的文档,改如何处理?将operator操作符设置成and只会将文档排除。

    match查询支持minimum_should_match最小匹配参数,这让我们可以指定必须匹配的词项数用来表示一个文档是否相关。我们可以将其设置为某个具体数字,

    GET /item/_search
    {
      "query": {
        "match": {
          "title": {
            "query": "SpringData Es2",
            "minimum_should_match": "50%"
          }
        }
      }
    }
    

    搜索语句可以分为2个次,如果使用and关系 ,需要同时满足2个词才会被搜索到。这里我们采用最小匹配数50%,那么也就是说只要匹配到总次数量的50%计科,这里2*50%等于1。所以只要包含1个词条就算满足了。

    多字段查询(multi_match)

    multi_match与match类似,不同的是它可以在多个字段中查询

    GET /item/_search
    {
      "query": {
        "multi_match": {
          "query": "搜索功能99",
          "fields": ["title","content"]
        }
      }
    }
    

    多词条精确匹配(terms)

    terms查询和term查询一样,但它允许你指定多值进行匹配。如果这个字段包含了知道你个值中的任何一个值,那么这个文档满足条件:

    GET /item/_search
    {
      "query": {
        "terms": {
          "content": [
            "ES",
            "搜索功能"
          ]
        }
      }
    }
    

    相关文章

      网友评论

          本文标题:ES 1查询

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