elasticsearch - Elasticsearch:查找任何对象属性大于0的文档

标签 elasticsearch

我正在尝试搜索符合以下条件的任何文档:

索引文件:

{id:1,stock:{1123:4,1124:12,1125:15}}
{id:2,stock:{1454:12,1455:0}}
{id:3,stock:{}}
{id:4,stock:{2544:0,2545:0}}

我想查找任何库存属性大于0的文档,匹配的文档应为1和2。

看起来很简单,但是我没有找到成功的方法来编写这种脚本。

谢谢!

最佳答案

您的索引stocks中有几个字段?

有很多字段会导致巨大的映射,这就是为什么Andrei Stefan提出的解决方案比较慢的原因。更糟糕的是,如果您的属性数量越来越多,则映射会越来越大,并且可能导致集群崩溃,这称为mapping explosion

存储包含许多不同键的数组的正确方法是使用nested mapping这样的:

stock: [
    {"key": 1123, "value": 4}
    {"key": 1124, "value": 12}
    {"key": 1125, "value": 15}
]

通过这种数据结构,很明显可以构建请求的查询(使用nested filter搜索stock.value> 0)。但是,将映射更改为嵌套将迫使您重新索引数据并调整一些当前查询。

关于elasticsearch - Elasticsearch:查找任何对象属性大于0的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40258843/

相关文章:

ubuntu - 为什么 elasticsearch 不能在 Ubuntu 14.04 上运行?

elasticsearch - 德鲁伊与 Elasticsearch

lucene - 在 Elasticsearch 搜索中使用通配符和必需运算符

结合字符串匹配和嵌套字段值的 ElasticSearch 查询

laravel - 在Elasticsearch中进行自定义排序?

c# - 如何使用 C# 运行 CURL 命令?

java - ElasticSearch 通过数组字段作为独占搜索进行搜索

elasticsearch - 通过应用弹性查询从嵌套字段中获取数据

javascript - ElasticSearch - 按 : sorting and pagging 聚合/分组