gpt4 book ai didi

regex - ElasticSearch中的Buggy Regexp查询

转载 作者:行者123 更新时间:2023-12-02 23:35:42 24 4
gpt4 key购买 nike

我插入了一个raw_id字段等于1.2.3.04ABC的文档,并且试图构造一个正则表达式查询以在ES中搜索该文档。我正在使用以下查询:

curl -X POST 'http://localhost:9200/hello/world/_search' -d '{
"query": {
"regexp": {
"raw_id": "1\\.2\\.3\\.04ABC"
}
}
}'

这将返回结果为空结果
{
"took":1,
"timed_out":false,
"_shards": {
"total":5,
"successful":5,
"failed":0
},
"hits": {
"total":0,
"max_score":null,
"hits":[]
}
}

另一方面,当我使用稍微修改的查询时
curl -X POST 'http://localhost:9200/hello/world/_search' -d '{
"query": {
"regexp": {
"raw_id": "1\\.2\\.3.*"
}
}
}'

我得到非空结果:
{
"_shards": {
"failed": 0,
"successful": 5,
"total": 5
},
"hits": {
"hits": [
{
"_id": "adfafadfafa",
"_index": "hello",
"_score": 1.0,
"_source": {
"raw_id": "1.2.3.04ABC"
},
"_type": "world"
}
],
"max_score": 1.0,
"total": 1
},
"timed_out": false,
"took": 2
}

有人可以帮我理解为什么第一个查询不起作用吗?

最佳答案

我的猜测是您的raw_id字段是一个分析字符串,而应该是not_analyzed。我将以下映射与一个已分析的字符串字段id和另一个not_analyzed字符串字段raw_id结合使用:

curl -XPUT 'http://localhost:9200/hello' -d '{
"mappings": {
"world": {
"properties": {
"id": {
"type": "string"
},
"raw_id": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}'

然后,我索引了以下文档:
curl -XPUT 'http://localhost:9200/hello/world/1' -d '{
"id": "1.2.3.04ABC",
"raw_id": "1.2.3.04ABC"
}'

现在将您的查询带到上面,如果我针对 id字段进行搜索,则不会获得任何成功:
curl -XPOST 'http://localhost:9200/hello/world/_search' -d '{
"query": {
"regexp": {
"id": "1\\.2\\.3\\.04ABC"
}
}
}'
=> 0 hits KO

但是,当我针对 raw_id字段进行搜索时,我确实获得了成功:
curl -XPOST 'http://localhost:9200/hello/world/_search' -d '{
"query": {
"regexp": {
"raw_id": "1\\.2\\.3\\.04ABC"
}
}
}'
=> 1 hit OK

在您的第二个查询中,我对每个字段都产生了影响:
curl -XPOST 'http://localhost:9200/hello/world/_search' -d '{
"query": {
"regexp": {
"id": "1\\.2\\.3.*"
}
}
}'
=> 1 hit OK

curl -XPOST 'http://localhost:9200/hello/world/_search' -d '{
"query": {
"regexp": {
"raw_id": "1\\.2\\.3.*"
}
}
}'
=> 1 hit OK

关于regex - ElasticSearch中的Buggy Regexp查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31619316/

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