elasticsearch 如何使用mustache将数组传递给ElasticSearch搜索模板?,elasticsearch,elasticsearch" /> elasticsearch 如何使用mustache将数组传递给ElasticSearch搜索模板?,elasticsearch,elasticsearch" />

elasticsearch 如何使用mustache将数组传递给ElasticSearch搜索模板?

elasticsearch 如何使用mustache将数组传递给ElasticSearch搜索模板?,elasticsearch,elasticsearch,这是我的搜索查询模板的一部分: "query": { "bool": { "must": [ { "terms": { "platform_id": [ "{{#platform_ids}}", "{{.}}",

这是我的搜索查询模板的一部分:

"query": {
    "bool": {
      "must": [
        {
          "terms": {
            "platform_id": [
              "{{#platform_ids}}",
              "{{.}}",
              "{{/platform_ids}}"
            ]
          }
        }
      ], 
此解决方案取自elasticsearch官方网站

我有一个疑问:

GET _render/template
{
  "id": "fddf", 
  "params": {
    "query_string": "tinders",
    "platform_ids": [1, 2]
  }
}
结果是:

"terms" : {
  "platform_id" : [
    "",
    "1",
    "",
    "2",
    ""
  ]
}
但我需要这个:

"terms" : {
  "platform_id" : [
    1, 2
  ]
}

无法找到此问题的解决方案。

请求:

GET _render/template
{
  "source": "{ \"query\": { \"terms\": {{#toJson}}bids{{/toJson}} }}",
  "params": {
    "bids":[1,2]
  }
}
{
  "template_output" : {
    "query" : {
      "terms" : [
        1,
        2
      ]
    }
  }
}
"query": {
"bool": {
  "must": [
    {
      "terms": {
        "platform_id": {{#toJson}}platform_id{{/toJson}}
      }
    }
  ], 
响应:

GET _render/template
{
  "source": "{ \"query\": { \"terms\": {{#toJson}}bids{{/toJson}} }}",
  "params": {
    "bids":[1,2]
  }
}
{
  "template_output" : {
    "query" : {
      "terms" : [
        1,
        2
      ]
    }
  }
}
"query": {
"bool": {
  "must": [
    {
      "terms": {
        "platform_id": {{#toJson}}platform_id{{/toJson}}
      }
    }
  ], 
尝试以下内容:

GET _render/template
{
  "source": "{ \"query\": { \"terms\": {{#toJson}}bids{{/toJson}} }}",
  "params": {
    "bids":[1,2]
  }
}
{
  "template_output" : {
    "query" : {
      "terms" : [
        1,
        2
      ]
    }
  }
}
"query": {
"bool": {
  "must": [
    {
      "terms": {
        "platform_id": {{#toJson}}platform_id{{/toJson}}
      }
    }
  ], 

请求:

GET _render/template
{
  "source": "{ \"query\": { \"terms\": {{#toJson}}bids{{/toJson}} }}",
  "params": {
    "bids":[1,2]
  }
}
{
  "template_output" : {
    "query" : {
      "terms" : [
        1,
        2
      ]
    }
  }
}
"query": {
"bool": {
  "must": [
    {
      "terms": {
        "platform_id": {{#toJson}}platform_id{{/toJson}}
      }
    }
  ], 
响应:

GET _render/template
{
  "source": "{ \"query\": { \"terms\": {{#toJson}}bids{{/toJson}} }}",
  "params": {
    "bids":[1,2]
  }
}
{
  "template_output" : {
    "query" : {
      "terms" : [
        1,
        2
      ]
    }
  }
}
"query": {
"bool": {
  "must": [
    {
      "terms": {
        "platform_id": {{#toJson}}platform_id{{/toJson}}
      }
    }
  ], 
尝试以下内容:

GET _render/template
{
  "source": "{ \"query\": { \"terms\": {{#toJson}}bids{{/toJson}} }}",
  "params": {
    "bids":[1,2]
  }
}
{
  "template_output" : {
    "query" : {
      "terms" : [
        1,
        2
      ]
    }
  }
}
"query": {
"bool": {
  "must": [
    {
      "terms": {
        "platform_id": {{#toJson}}platform_id{{/toJson}}
      }
    }
  ], 

您需要修改模板,如下所示

GET _render/template
{
  "source": "{\"query\":{\"bool\":{\"must\":[{\"terms\":{\"platform_id\":[{{#platform_id}}{{value}}{{#comma}},{{/comma}}{{/platform_id}}]}}]}}}",
  "params": {
    "platform_id": [
      {
        "value": 1,
        "comma": true
      },
      {
        "value": 2
      }
    ]
  }
}
结果将是

    {
  "template_output": {
    "query": {
      "bool": {
        "must": [
          {
            "terms": {
              "platform_id": [
                1,
                2
              ]
            }
          }
        ]
      }
    }
  }
}

请参阅此部分以获得详细说明

您需要修改模板,如下所示

GET _render/template
{
  "source": "{\"query\":{\"bool\":{\"must\":[{\"terms\":{\"platform_id\":[{{#platform_id}}{{value}}{{#comma}},{{/comma}}{{/platform_id}}]}}]}}}",
  "params": {
    "platform_id": [
      {
        "value": 1,
        "comma": true
      },
      {
        "value": 2
      }
    ]
  }
}
结果将是

    {
  "template_output": {
    "query": {
      "bool": {
        "must": [
          {
            "terms": {
              "platform_id": [
                1,
                2
              ]
            }
          }
        ]
      }
    }
  }
}

请参阅此处以获得详细说明

您使用什么语言渲染胡子模板?如果您使用的是python/javascript之类的东西,可能有更简单的方法来实现这一点?如果您使用的是python/javascript之类的东西,可能有更简单的方法来实现这一点。谢谢,在我意识到必须将源模板完全作为字符串传递之后,这一点就起到了作用。我尝试了所有这些方法,源代码是一个json,而不是一个包含json和mustache模板的字符串。谢谢,在我意识到必须将源代码模板作为字符串完全传递之后,这一切都起了作用。我尝试了所有这些方法,源代码是一个json,而不是一个包含json和mustache模板的字符串。所有问题实际上是我将源代码模板作为json传递,而不是一个包含json的字符串。这个方法也有效,谢谢!所有的问题实际上是我将源模板作为json传递,而不是包含json的字符串。这个方法也有效,谢谢!