MongDB投影附近是否有任何Elasticsearch操作?

qweqweqweqweqw

我将mongodb导入elasticsearch进行一些复杂的排序,其中一部分看起来像这样

{
    "ProductName": {
        "WORLDWIDE": {
            "zh": "产品 1",
            "en": "product 1"
        },
        "CHINA": {
            "zh": null,
            "en": null
        }
    }
}

在Mongodb的聚合中,我可以使用

$project: {
    "ProductName": {
        $ifNull: [ {$ifNull: [ "$ProductName.CHINA.zh", "$ProductName.CHINA.en" ]}, {$ifNull: [ "$ProductName.WORLDWIDE.zh", "$ProductName.WORLDWIDE.en" ]} ]
    }
}

将特定值放入一个没有嵌套的字段中。

在Elasticsearch中可以做同样的事情吗?

Opster ES Ninja-Kamal

我提出了以下脚本字段,在其中创建了一个新变量,my_productName并根据您在mongo聚合查询中提到的条件分配了值。

请注意,我假设字段是类型,keyword否则无法使用text数据类型。可以随意更改以下查询中的条件。

我还假设您的所有文档都将具有问题中同一文档中提到的任何值。

查询请求:

POST <your_index_name>/_search
{
    "query" : {
        "match_all": {}
    },
    "script_fields" : {
        "my_productName" : {
            "script" : {
                "lang": "painless",
                "source": """
                if(doc['ProductName.CHINA.zh'].value!=null){
                  return doc['ProductName.CHINA.zh'].value;
                }else if(doc['ProductName.CHINA.en'].value!=null){
                  return doc['ProductName.CHINA.en'].value;
                }else if(doc['ProductName.WORLDWIDE.zh'].value!=null){
                  return doc['ProductName.WORLDWIDE.zh'].value;
                }else {
                  return doc['ProductName.WORLDWIDE.ch'].value;
                }

                """
            }
        }
    }
}

查询响应:

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "<your_index_name>",
        "_type" : "<your_type_name>",
        "_id" : "1",
        "_score" : 1.0,
        "fields" : {
          "my_productName" : [
            "产品 1"
          ]
        }
      }
    ]
  }
}

还有一件事是,如果您希望其他字段出现,则可以"_source": {"fieldname1", "fieldname2}在上方添加"query"

希望这会有所帮助,如果有帮助,请随时投票和/或接受答案:)

让我知道您是否有任何疑问。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为 Elasticsearch 创建索引映射是否有任何性能优势

RDD中是否有任何操作可以保持顺序?

Java阻塞IO-写操作是否有任何优势?

ElasticSearch:是否有任何应用程序可以启用对ElasticSearch的访问管理?

如何注意在 Power BI 中指示的操作之后是否有任何未来的操作发生

是否有任何有关屏幕阅读器应如何操作的文档?

附近的API没有收到任何消息

ElasticSearch:通过在ElasticSearch中简单地给出查询,是否有任何选项可以搜索文档中的所有文件

是否有固定时间的操作来确定select语句中的结果对象是否有任何行?

是否有任何解决方案可以在 elasticsearch 中搜索精确单词和包含单词

Elasticsearch 是否有任何内置功能可以防止在指定条件下索引文档?

是否有任何理由不从多操作系统系统上的BIOS引导?

应用程序池的启动模式和空闲超时操作之间是否有任何冲突?

在Here SDK Map对象上执行操作是否有任何线程限制?

Microsoft是否有任何允许用户执行操作的电子邮件标记?

在任何标准库中,是否有帮助程序类对布尔集合进行逻辑操作?

按行操作以查看是否有任何其他列表中的列

检查FileUpload是否在客户端没有执行任何操作

是否有标准的虚拟可执行文件,在Linux中不执行任何操作?

是否有任何编程语言函数调用在内部调用操作系统API?

是否有任何原子设置操作返回C中的旧值?

z80的操作码布局是否有任何图案?

文件扩展名是否有任何用途(用于操作系统)?

Windows 7是否在不执行任何操作时使用了所有这些内存?

是否有任何网站可以在线使用ubuntu操作系统?

是否有任何 github 操作可以为子模块更新创建拉取请求?

检查 Cookie 是否存在,如果是,则执行任何操作,如果没有,则设置 cookie

检查是否有任何更新

是否有任何动态PPA?