美文网首页
Elasticsearch search template将搜索

Elasticsearch search template将搜索

作者: Splunker | 来源:发表于2019-12-22 22:50 被阅读0次

    搜索模板,search template,高级功能,就可以将我们的一些搜索进行模板化,然后的话,每次执行这个搜索,就直接调用模板,给传入一些参数就可以

    search template入门

    search template:"{{field}}" : "{{value}}" ,设置search template

    GET /blog_website/blogs/_search/template
    {
      "inline" : {
        "query": { 
          "match" : { 
            "{{field}}" : "{{value}}" 
          } 
        }
      },
      "params" : {
          "field" : "title",
          "value" : "博客"
      }
    }
    

    相当于

    GET /blog_website/blogs/_search
    {
      "query": { 
        "match" : { 
          "title" : "博客" 
        } 
      }
    }
    
    toJson

    以json格式传入,设置search template

    GET /blog_website/blogs/_search/template
    {
      "inline": "{\"query\": {\"match\": {{#toJson}}matchCondition{{/toJson}}}}",
      "params": {
        "matchCondition": {
          "title": "博客"
        }
      }
    }
    

    相当于

    GET /blog_website/blogs/_search
    {
      "query": { 
        "match" : { 
          "title" : "博客" 
        } 
      }
    }
    
    join

    一个field多值查询,join关联,设置search template

    GET /blog_website/blogs/_search/template
    {
      "inline": {
        "query": {
          "match": {
            "title": "{{#join delimiter=' '}}titles{{/join delimiter=' '}}"
          }
        }
      },
      "params": {
        "titles": ["博客", "网站"]
      }
    }
    

    相当于

    GET /blog_website/blogs/_search
    {
      "query": { 
        "match" : { 
          "title" : "博客 网站" 
        } 
      }
    }
    
    default value

    初始化search template数据,params未传values时候,使用初始化的默认数据查询初始化搜索数据
    设置search template

    GET /blog_website/blogs/_search/template
    {
      "inline": {
        "query": {
          "range": {
            "views": {
              "gte": "{{start}}",
              "lte": "{{end}}{{^end}}20{{/end}}"
            }
          }
        }
      },
      "params": {
        "start": 1,
        "end": 10
      }
    }
    

    相当于

    GET /blog_website/blogs/_search
    {
      "query": {
        "range": {
          "views": {
            "gte": 1,
            "lte": 10
          }
        }
      }
    }
    

    设置search template,使用default value

    GET /blog_website/blogs/_search/template
    {
      "inline": {
        "query": {
          "range": {
            "views": {
              "gte": "{{start}}",
              "lte": "{{end}}{{^end}}20{{/end}}"
            }
          }
        }
      },
      "params": {
        "start": 1
      }
    }
    

    相当于

    GET /blog_website/blogs/_search
    {
      "query": {
        "range": {
          "views": {
            "gte": 1,
            "lte": 20
          }
        }
      }
    }
    
    conditional

    条件查询模版,设置search template

    {
      "query": {
        "bool": {
          "must": {
            "match": {
              "line": "{{text}}" 
            }
          },
          "filter": {
            {{#line_no}} 
              "range": {
                "line_no": {
                  {{#start}} 
                    "gte": "{{start}}" 
                    {{#end}},{{/end}} 
                  {{/start}} 
                  {{#end}} 
                    "lte": "{{end}}" 
                  {{/end}} 
                }
              }
            {{/line_no}} 
          }
        }
      }
    }
    

    相当于

    GET /my_index/my_type/_search 
    {
      "took": 4,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
      },
      "hits": {
        "total": 1,
        "max_score": 1,
        "hits": [
          {
            "_index": "my_index",
            "_type": "my_type",
            "_id": "1",
            "_score": 1,
            "_source": {
              "line": "我的博客",
              "line_no": 5
            }
          }
        ]
      }
    }
    
    保存search template

    es的config/scripts目录下,预先保存这个复杂的模板,后缀名是.mustache,文件名是conditonal
    在进行 条件 search template 查询

    GET /my_index/my_type/_search/template
    {
      "file": "conditional",
      "params": {
        "text": "博客",
        "line_no": true,
        "start": 1,
        "end": 10
      }
    }
    

    相关文章

      网友评论

          本文标题:Elasticsearch search template将搜索

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