gpt4 book ai didi

elasticsearch - 如何在ElasticSearch中查询可以为整数值的关键字嵌套字段?

转载 作者:行者123 更新时间:2023-12-03 01:20:25 31 4
gpt4 key购买 nike

这是ES文档中字段的示例。如何查询只能为整数的“prices.value”?

在这种情况下,值是“150.99”,并且可以完全转换为整数。但有时在文本中可能会出现类似“值”:“很多”的文字,而我想排除具有此值的文档。

 "prices": [
{
"currency": "RUR",
"id_offer": 605994811,
"id_prcdoc": 42172,
"id_prcknd": 20859,
"info": {},
"min_order": null,
"sell_by": null,
"value": "150.99"}]

该字段的索引:
"prices": {
"type": "nested",
"properties": {
"currency": {
"type": "keyword"
},
"id_offer": {
"type": "integer"
},
"id_prcdoc": {
"type": "integer"
},
"id_prcknd": {
"type": "integer"
},
"min_order": {
"type": "keyword"
},
"sell_by": {
"type": "keyword"
},
"value": {
"type": "keyword",
"index": false
}
}
}

有时它的“值”字段可以是“0.00”,可能我想将此值排除在外。

最佳答案

您可以使用脚本轻松检查值是否可以转换为数字。

{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "prices",
"query": {
"script": {
"script": "if(doc['prices.value'].size()==0){return false;}if(doc['prices.value'].value=='0.00'){return false;}try{ Double.parseDouble(doc['prices.value'].value); return true;} catch(Exception e){return false;} "
}
},
"inner_hits": {}
}
}
]
}
}
}

结果将在inner_hit中。由于脚本速度较慢,因此在编制索引时最好解决它。我们可以创建另一个字段,该字段只有在价格值为数字时才具有值,并且在查询中可以使用该字段

编辑:
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "prices",
"query": {
"bool": {
"must": [
{
"regexp": {
"prices.value": "[1-9][0-9]*.*[0-9]*"
}
}
]
}
},
"inner_hits": {}
}
}
]
}
}
}

关于elasticsearch - 如何在ElasticSearch中查询可以为整数值的关键字嵌套字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60447219/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com