我正在使用州代码作为查询字符串查询州,而“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”等更改“或”,那么它工作正常。
我寻找一种方法来转义保留字并找到此链接,但在运行以下查询时它似乎对我不起作用:
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" } }
}
};
(请注意,当使用非保留字状态更改“或”时,该查询也有效,所以我知道这不是查询本身的问题)。
有任何想法吗?