我想检查一个字段是否存在,并返回它不存在的文档的结果。 我正在使用 Golang 库 Elastic: https : //github.com/olivere/elastic

我尝试了以下但它不起作用:

e := elastic.NewExistsFilter("my_tag")
n := elastic.NewNotFilter(e)
filters = append(filters, n)

#1楼 票数:11

好的,我不会深入研究您的语言查询 API。 由于您要搜索不存在的字段(空),请在must_not使用exists过滤器(如果您使用 bool 过滤器):

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must_not": [
            {
              "exists": {
                "field": "your_field"
              }
            }
          ]
        }
      }
    }
  },
  "from": 0,
  "size": 500
}

希望这可以帮助!

谢谢

#2楼 票数:6

您可以使用带有bool 查询 must_not 的存在查询

GET /_search
{
    "query": {
        "bool": {
            "must_not": {
                "exists": {
                    "field": "your_field"
                }
            }
        }
    }
}

在 Elasticsearch 6.5 中测试

#3楼 票数:3

您可以为不存在创建一个布尔查询,如下所示:

existsQuery := elastic.NewExistsQuery(fieldName)
existsBoolQuery := elastic.NewBoolQuery().MustNot(existsQuery)

#4楼 票数:1

我不会尝试提供完整的解决方案,因为我对您使用的库(或者实际上是 go 语言)并不十分熟悉。

但是,Lucene 不支持像这里那样的纯否定查询。 Lucene的需要被告知匹配的内容。 像这样的否定严格禁止搜索结果,但不会隐式匹配其他所有内容。

为了做你正在寻找的东西,你会想要使用一个布尔查询来将你的不过滤器与匹配所有(我看到在库中可用)结合起来。

注意:与使用 match all 的任何时候一样,性能可能会受到影响。

  ask by translate from so

未解决问题?本站智能推荐:

3回复

高效过滤/搜索

我们有一个托管应用程序来管理内容页面。 每个页面可以有许多自定义字段,以及一些标准字段(时间戳,用户名,用户电子邮件等)。 可能有数百个不同的站点使用该系统 - 处理过滤/搜索的有效方法是什么? 画出要缩小的网格视图。 您可以筛选特定字段(用户ID,日期),也可以输入全文搜索。 例
5回复

使用Lucene计算类别中的结果

我正在尝试使用Lucene Java 2.3.2来实现对产品目录的搜索。 除了产品的常规字段外,还有一个名为“类别”的字段。 产品可以分为多个类别。 目前,我使用FilteredQuery搜索每个类别的相同搜索词,以获得每个类别的结果数。 这导致每个查询20-30个内部搜索调用以显示结
2回复

在弹性搜索中按字段模拟字段折叠/分组

弹性搜索当前(从0.18.4开始)不支持字段折叠。 有没有一种很好的方法来模拟这个,以避免N个搜索查询?
1回复

弹性搜索中单个查询中多个字段的doc频率

如何在单个查询中获取多个字段的文档频率 如果我们查询姓名和地址。 它应根据查询返回名称索引和lat_long索引的docfrequency。
1回复

如何编写一个匹配然后过滤记录的弹性搜索查询?

在 Elastic Search 中,我编写了一个匹配搜索词并获取结果的查询。 这是我使用的查询。 这是我得到的回应: 现在我想过滤在 country_code 上传递的响应。 所以我试过这个查询 这是索引映射: 我应该得到一个结果,但是,这个查询没有给我任何结果。 有人可以帮我写一个可以匹配然后从
2回复

弹性搜索中建议的工作原理

我知道Elasticsearch中的短语和术语建议者。 但是我想知道在Elasticsearch中数据是如何内部匹配并返回的吗? 拼写检查也是如此。 在Elasticsearch建议者中如何进行评分?
1回复

在弹性搜索中创建索引时出错

我是弹性搜索的新手我正在尝试使用我在网上找到的以下映射创建索引,并使用 kibana 作为我的客户端它抛出错误为 . "type" : "mapper_parsing_exception", "reason" : "根映射定义有不受支持的参数:[local_test : {_all={enabl
3回复

我可以过滤所有必须存在的标签吗?(不只是一个)

假设我有一个在Elasticsearch中用以下标签索引的文档: ["red", "blue"] 我在搜索标签: ["red"] 在当前的实现中( 条件查询 ),我带回结果,但是对于新的业务规则,我们只想返回“所有标签”匹配项。 例如,给定文档和使用tags过滤的搜索: 在Ela