我很难将elastic.js.
用于弹性搜索转换为{
"aggs": {
"foo": {
"filter": {
"bool": {
"must": [
{
"query": {
"query_string": {
"query": "*"
}
}
},
{
"terms": {
"shape": [
"wc"
]
}
}
]
}
},
"aggs": {
"field": {
"terms": {
"field": "shape",
"size": 10,
"exclude": {
"pattern": []
}
}
}
}
}
},
"size": 0
}
我正在阅读文档,但我无法弄明白。您可以在网上找到的示例主要是关于弃用的facets功能,这不是很有用。
例如聚合的JSON如下:
Test.Initialize();
答案 0 :(得分:1)
这就是filter aggregation
elasticjs
与ejs.Request()
.size(0)
.agg(ejs.FilterAggregation("foo").filter(ejs.BoolFilter()
.must(ejs.TermsFilter('shape', 'wc'))
.must(ejs.QueryFilter(ejs.QueryStringQuery().query("*"))))
.agg(ejs.TermsAggregation("field").field("shape").size(10).exclude("my_pattern"))
)
shape
顺便说一句,您正在aggregations
上过滤,然后对其进行String topicStatusString = "1234:0,567:1,89:2";
String someId = "1234";
topicStatusString.replaceAll(someId+":0", someId+":1");
topicStatusString.replaceAll(someId+":2", someId+":1");
。我不确定你到底在想什么。
我发现他们的similar question非常好,而且他们有一个很棒的documentation来检查您的查询是否有效且正确。这对你有很大的帮助
希望这会有所帮助!!
答案 1 :(得分:0)
您似乎在aggs
元素下放错了查询。试试这个:
{
"size": 0,
"query": {
"bool": {
"must": [
{
"query": {
"query_string": {
"query": "*"
}
}
},
{
"terms": {
"shape": [
"wc"
]
}
}
]
}
},
"aggs": {
"foo": {
"terms": {
"field": "shape",
"size": 10,
"exclude": {
"pattern": []
}
}
}
}
}