代码之家  ›  专栏  ›  技术社区  ›  Shark

Elasticsearch模板未读取参数

  •  1
  • Shark  · 技术社区  · 9 年前

    我一直在这个网站上效仿 Parameterizing Queries in Solr and Elasticsearch 在ES部分。注意,这是作者正在使用的旧ES版本,但我认为这不会影响这种情况。我使用的是版本1.6的ES。

    我有一个模板 {{ES_HOME}}/config/scripts/test.mustache 这看起来像下面的片段。注意 {{q}} “查询”中的参数。

    { 
      "query": {
        "multi_match": {
          "query": "{{q}}",
          "analyzer": "keyword",
          "fields": [
              "description^10",
              "name^50",
          ]
        }
      },
      "aggregations": {
        "doctype" : {
          "terms" : { 
            "field" : "doctype.untouched"      
          }
        }
      }
    }
    

    我向 http://localhost:9200/forward/_search/template 具有以下消息正文

    {
      "template": {
        "file": "test",
        "params": {
          "q": "a"
        }
      }
    }
    

    它运行模板,但获得0次命中,并返回以下内容:

    {
        "took": 3,
        "timed_out": false,
        "_shards": {
            "total": 5,
            "successful": 5,
            "failed": 0
        },
        "hits": {
            "total": 0,
            "max_score": null,
            "hits": []
        },
        "aggregations": {
            "doctype": {
                "doc_count_error_upper_bound": 0,
                "sum_other_doc_count": 0,
                "buckets": []
            },
        }
    }
    

    或者,如果我将“a”硬编码到{{q}}所在的位置,并发布到模板,它将正确返回查询“a”的结果。我在设计中做了什么固有的错误吗?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Lourens    9 年前

    根据 docs 这个 params 对象应位于 template 对象

    {
        "template": {
            "file": "test"
        },
        "params": {
            "q": "a"
        }
    }