Elasticsearch - 将查询字符串定义为C#中的过滤器

时间:2017-03-12 14:13:32

标签: c# elasticsearch elasticsearch-net

我有下一个有效的弹性搜索查询:

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "IsDeleted": false
              }
            },
            {
              "query": {
                "query_string": {
                  "fields": [
                    "payPlan.PayPlanData.*"
                  ],
                  "query": "(StartInterval :[1 TO 100] AND (EndInterval :[1 TO 9999999]))"
                }
              }
            }
          ]
        }
      }
    }
  }
}

是否可以将其定义为c#Nest.FilterDescriptor元素? 主要问题是将QueryStringQuery定义为过滤器

1 个答案:

答案 0 :(得分:0)

以下是我设法创建实现弹性搜索查询字符串作为过滤器的示例,我添加了其他过滤器,以便您可以看到一个真实示例:

{
"query": {
"filtered": {
  "query": {
    "match_all": {}
  },
  "filter": {
    "bool": {
      "must": [
        {
          "term": {
            "NotSpan": true
          }
        },
        {
          "and": {
            "filters": [
              {
                "bool": {
                  "must": [
                    {
                      "fquery": {
                        "query": {
                          "query_string": {
                            "query": "(StartTimeAsNumber :[1 TO 12345] AND (EndTimeAsNumber :[12345 TO 9999999]))",
                            "default_field": "PayPlan.PayPlanData.*"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
      ],
      "must_not": [
        {
          "term": {
            "userRole": "admin"
          }
        }
      ]
    }
  }
}

} }