带有存在/缺失过滤器的elasticsearch脚本查询

时间:2016-01-27 13:22:37

标签: elasticsearch

我正在尝试使用查询过滤器运行脚本。 脚本应该返回标题为gt 30的所有书籍:

GET books/_search
{
    "filter" : {       
          "script" : {
              "script" : "_source.title?.length() > 30"
          }
      }
}

这有效。

但如果我尝试添加一些过滤器,就像我想要所有没有“类型”字段的书籍一样:

GET book/_search
{
    "filter" : {        
          "script" : {
              "script" : "_source.title?.length() > 30"
          },
          "missing" : { "field" : "type" },
      }
}

然后我得到错误:

nested: ElasticsearchParseException[Expected field name but got START_OBJECT \"exists\"]; }]

所以我可以使用脚本过滤器查询缺少的字段吗?

1 个答案:

答案 0 :(得分:2)

您走在正确的轨道上,只需将两个过滤器合并到一个bool/must query

modelBuilder.Entity<EntityName>().HasKey(e => new {e.KeyCol1, e.KeyCol2,     e.KeyCol3});