Py学习  »  Elasticsearch

使用ElasticSearch返回到另一个空字段

ssb • 4 年前 • 510 次点击  

我有一个可以编辑数据的表, body body_edited . 当内容添加到表中时, 身体 字段始终存在并且 身体编辑的 是空的。 身体编辑的 对于一小部分内容,这些内容在将来可能会发生更改,并在维护原始内容的同时用于面向公众的内容。

我需要以这样的方式搜索这些数据 身体编辑的 用于搜索,但返回到 身体 什么时候? 身体编辑的 不存在。我已经找到了如何为空字段输入一个虚拟值,但我不知道如何通过查询返回到另一个字段。

这个 身体 字段将因遗留原因而维护。在从SQL导入数据时创建第三个字段是一个选项,但它将大大增加存储所需的空间量。

有没有办法通过跨两个字段的查询来实现这一点?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37962
 
510 次点击  
文章 [ 1 ]  |  最新文章 4 年前
briarheart
Reply   •   1 楼
briarheart    5 年前

你可以用 should exists 条款。假设您有以下两个文档:

// Document 1
{
  "body": "quick brown fox",
  "body_edited": null
}

// Document 2
{
  "body": "quick brown fox",
  "body_edited": "jumps over the lazy dog"
}

下面是搜索术语“brown fox”的示例:

"query": {
  "bool": {
    "should": [
      {
        "match": {
          "body_edited": "brown fox"
        }
      },
      {
        "bool": {
          "must": {
            "match": {
              "body": "brown fox"
            }
          },
          "must_not": {
            "exists": {
              "field": "body_edited"
            }
          }
        }
      }
    ]
  }
}

尽管事实上 body 文档2中的字段也符合我们的搜索条件。