gpt4 book ai didi

elasticsearch - 渗滤未按预期返回结果

转载 作者:行者123 更新时间:2023-12-01 04:56:51 25 4
gpt4 key购买 nike

我们正在尝试设置和使用渗滤液,但我们并没有得到预期的结果。

首先,我注册了几个查询:

curl -XPUT 'localhost:9200/index-234234/.percolator/query1' -d '{
"query" : {
"range" : {
"price" : { "gte": 100 }
}
}
}'

curl -XPUT 'localhost:9200/index-234234/.percolator/query2' -d '{
"query" : {
"range" : {
"price" : { "gte": 200 }
}
}
}'

然后,当我尝试将它与 150 进行匹配时,理想情况下它应该只匹配 query1,但它同时匹配两个查询:

curl -XGET 'localhost:9200/index-234234/message/_percolate' -d '{
"doc" : {
"price" : 150
}
}'

{"took":4,"_shards":{"total":5,"successful":5,"failed":0},"total":2,"matches":[{"_index":"index-234234","_id":"query1"},{"_index":"index-234234","_id":"query2"}]}

任何关于为什么会发生这种情况的指示将不胜感激。

最佳答案

问题是您在为文档设置映射之前注册了过滤器查询。过滤器必须在没有定义映射的情况下注册查询,这可能是一个问题,特别是对于范围查询。

您应该通过删除索引重新开始,然后先运行此映射命令:

curl -XPOST localhost:9200/index-234234 -d '{
"mappings" : {
"message" : {
"properties" : {
"price" : {
"type" : "long"
}
}
}
}
}'

然后执行您之前的命令(注册两个过滤器查询,然后过滤一个文档)您将得到以下正确响应:

{"took":3,"_shards":{"total":5,"successful":5,"failed":0},"total":1,"matches":[{"_index":"index-234234","_id":"query1"}]}

您可能会发现几年前的这个讨论很有帮助:

http://grokbase.com/t/gg/elasticsearch/124x6hq4ev/range-query-in-percolate-not-working

关于elasticsearch - 渗滤未按预期返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24228484/

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