我正在完善Elasticsearch搜索并遇到问题。作为参考,我有一组文件,每个文件都有以下字段:
"成分" :[成分1,成分2,成分3]
我想做的一个例子:
在我的文档中搜索所有带有'糖的文件。列于成分中;然后,返回所有含有“牛奶”字样的成分。'
通过汇总(下面的代码),我能够从所有文件中找到所有不同的成分,其中包括#34;成分"含有糖。'但是,我不知道如何进一步过滤这些结果 - 我尝试在聚合中使用后置过滤器和过滤器无济于事。
如果有人能帮助我,我们将不胜感激!
{
"query": {
"filtered": {
"filter": {
"term": {
"ingredients": {
"value": "Sugar"
}
}
}
}
},
"fields": [
"ingredients"
],
"size" : 0,
"aggs": {
"Ingreds": {
"terms": {
"field": "ingredients",
"size": 50,
}
}
}
}
而且,这是映射:
{
"recipe_cookbook": {
"mappings": {
"searchable-recipes": {
"properties": {
"recipe": {
"properties": {
"ingredients": {
"type": "string",
"index": "not_analyzed",
"doc_values": false
}
}
}
}
}
}
}
}
答案 0 :(得分:0)
为什么不尝试这样的事情?
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"term": {
"ingredients": "Sugar"
}
},
{
"term": {
"ingredients": "milk"
}
}
]
}
}
}
},
"fields": [
"ingredients"
],
"size" : 0,
"aggs": {
"Ingreds": {
"terms": {
"field": "ingredients",
"size": 50
}
}
}
}