zoukankan      html  css  js  c++  java
  • ES基础五 多个索引精确命中个数 查询

    POST /forum/article/_bulk
    { "update": { "_id": "1"} }
    { "doc" : {"title" : "this is java and elasticsearch blog"} }
    { "update": { "_id": "2"} }
    { "doc" : {"title" : "this is java blog"} }
    { "update": { "_id": "3"} }
    { "doc" : {"title" : "this is elasticsearch blog"} }
    { "update": { "_id": "4"} }
    { "doc" : {"title" : "this is java, elasticsearch, hadoop blog"} }
    
     
    
    
    GET /forum/article/_search
    {"query": {"match_all": {}}}
    
    /java或elasticsearch
    GET /forum/article/_search
    {"query": {"match": {
      "title": "java elasticsearch"
    }}
    }
    /java和elasticsearch GET
    /forum/article/_search { "query": { "constant_score": { "filter": { "match": { "title": { "query": "java elasticsearch", "operator": "and" } } } } } } /java 和elasticsearch GET /forum/article/_search { "query": { "match": { "title": { "query": " elasticsearch java", "operator": "and" } } } } /至少包含三个 GET /forum/article/_search { "query": { "match": { "title": { "query": "java elasticsearch spark hadoop", "minimum_should_match":"75%" } } } } /bool查询时,如果有must,should中可以不包含任何单词,但是should匹配会提高score GET /forum/article/_search { "query": { "bool": { "must": { "match": { "title": "java" }}, "must_not": { "match": { "title": "spark" }}, "should": [ { "match": { "title": "hadoop" }}, { "match": { "title": "elasticsearch" }} ] } } } /精确到分词命中具体个数 GET /forum/article/_search { "query": { "bool": { "should": [ { "match": { "title": "java" } }, { "match": { "title": "elasticsearch" } }, { "match": { "title": "hadoop" } }, { "match": { "title": "spark" } } ], "minimum_should_match":3 } } }

     多个条件如何转为bool查询

    1、普通match如何转换为term+should
    
    {
        "match": { "title": "java elasticsearch"}
    }
    
    使用诸如上面的match query进行多值搜索的时候,es会在底层自动将这个match query转换为bool的语法
    bool should,指定多个搜索词,同时使用term query
    
    {
      "bool": {
        "should": [
          { "term": { "title": "java" }},
          { "term": { "title": "elasticsearch"   }}
        ]
      }
    }
    
    2、and match如何转换为term+must
    
    {
        "match": {
            "title": {
                "query":    "java elasticsearch",
                "operator": "and"
            }
        }
    }
    
    {
      "bool": {
        "must": [
          { "term": { "title": "java" }},
          { "term": { "title": "elasticsearch"   }}
        ]
      }
    }
    
    3、minimum_should_match如何转换
    
    {
        "match": {
            "title": {
                "query":                "java elasticsearch hadoop spark",
                "minimum_should_match": "75%"
            }
        }
    }
    
    {
      "bool": {
        "should": [
          { "term": { "title": "java" }},
          { "term": { "title": "elasticsearch"   }},
          { "term": { "title": "hadoop" }},
          { "term": { "title": "spark" }}
        ],
        "minimum_should_match": 3 
      }
    }

     boost,可以将某个搜索条件的权重加大,下面的搜索可以看出elasticsearch 的score比较大。

    GET /forum/article/_search 
    {
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "title": "blog"
              }
            }
          ],
          "should": [
            {
              "match": {
                "title": {
                  "query": "java"
                }
              }
            },
            {
              "match": {
                "title": {
                  "query": "hadoop"
                }
              }
            },
            {
              "match": {
                "title": {
                  "query": "elasticsearch",
                  "boost":5
                }
              }
            } 
          ]
        }
      }
    }
  • 相关阅读:
    第一次作业
    C语言I博客作业02
    C语言|博客作业11
    C语言I博客作业10
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    JDK-14 & Eclipse & Hello World!
  • 原文地址:https://www.cnblogs.com/javabeginer/p/13061176.html
Copyright © 2011-2022 走看看