gpt4 book ai didi

由于状态代码 "in"和 "or"是保留字,ElasticSearch 查询失败

转载 作者:行者123 更新时间:2023-11-29 02:55:18 24 4
gpt4 key购买 nike

我正在使用州代码作为查询字符串来查询州,而“in”和“or”(印第安纳州和俄勒冈州)失败了,大概是因为它们是保留字。

我可以确认数据正确存在于索引中,因为当我运行时:

curl -XGET 'localhost:9200/state/_search?size=200&pretty=true' -d '{"query" : {"match_all" : {}}}' > out.txt

我可以在那里看到工作状态和非工作状态的数据。另外,如果我将 CouchDB 中非工作状态的状态代码更改为 XYZ 之类的代码,我可以通过运行上述命令并搜索 XYZ 来验证更改是否进入 ES。所以我知道我正在查看正确的数据并且它的索引很好。

问题是查询。现在,我的整个查询对象如下所示:

var q = {
size: 0,
query: {
filtered: {
query: { term: { postcode: 'tn' } },
filter: { term: { version: 2 } }
}
},
facets: {
version: { terms: { field: "version" } },
count : { statistical : { field : "latestValues.enroll" } }
}
};

如果我运行该查询,我不会得到任何结果。如果我用“tn”或“tx”或“sc”等改变“或”,那么它工作正常。

我寻找一种方法来转义保留字并找到了 this link但在运行以下查询时,它似乎对我不起作用:

var q = {
size: 0,
query: {
filtered: {
query: { match_all: { } },
filter: { term: { version: 2, postcode: 'or' } }
}
},
facets: {
version: { terms: { field: "version" } },
count : { statistical : { field : "latestValues.enroll" } }
}
};

(请注意,当使用非保留字状态更改“或”时,该查询也有效,所以我知道这不是查询本身的问题)。

有什么想法吗?

最佳答案

这不是关于“保留”词,而是关于停用词。您正在使用一个删除停用词的分析器(默认分析器直到更新版本的 Elasticsearch)。

您需要更改该字段的分析器,请参见此处:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis.html

虽然这会改变,但需要重新编制索引

关于由于状态代码 "in"和 "or"是保留字,ElasticSearch 查询失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19571831/

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