gpt4 book ai didi

elasticsearch - ElasticSearch:如何按类似于SQL的 “CHAR_LENGTH()”进行搜索?

转载 作者:行者123 更新时间:2023-12-03 02:08:46 26 4
gpt4 key购买 nike

在(my)SQL中,我可以通过CHAR_LENGTH()过滤数据集:

SELECT [...] FROM [...] WHERE CHAR_LENGTH(`some_table_field`) < '1000';

有没有办法在ElasticSearch中进行这种搜索?

最佳答案

我认为您可以使用脚本过滤器
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-script-filter.html
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-scripting.html

"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"script" : {
"script" : "_source.some_table_field.length() < 1000"
}
}
}

请注意,与使用 _source相比,使用 doc的速度要慢得多,因此您可以重写查询以使用 doc,但是请确保 some_table_field字段的分析器需要返回单个原始字符串,例如“non_analyzer”,“keyword”,否则您将得到错误的length()并返回错误的结果。
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"script" : {
"script" : "doc['some_table_field'].value.length() < 1000"
}
}
}

关于elasticsearch - ElasticSearch:如何按类似于SQL的 “CHAR_LENGTH()”进行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20399922/

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