我有一个看起来像这样的数据结构:
"dictionaryProximities": [
{
"proximity": 0.32427,
"topicDictionaryName": "Electrical",
},
{
"proximity": 0.32141,
"topicDictionaryName": "Indoor Air Quality",
},
{
"proximity": 0.7321,
"topicDictionaryName": "Smart Home Technology",
},
我想创建一个过滤器/查询,该过滤器/查询将返回“智能家居技术”的接近度大于某个值(例如0.7)的所有文件。
现在我有查询:
{
"query": {
"nested": {
"path": "dictionaryProximities",
"query": {
"match": {
"dictionaryProximities.topicDictionaryName": {
"query": "Smart Home Technology",
"type": "phrase"
}
}
}
}
}
}
与查询一起堆积:
{
"query": {
"nested": {
"path": "dictionaryProximities",
"query": {
"range": {
"dictionaryProximities.proximity": {
"gte": 0.7,
"lt": 1
}
}
}
}
}
}
这将返回所有接近度大于0.7且名称为Smart Home Technology的文件。这与我想要的有很大的不同,后者是智能家居技术的所有文件的相近度仅在0.7以上。
我的问题是,有没有一种方法可以将这两个查询组合起来以达到我想要的结果?由于接近度和名称嵌套在同一级别,该任务甚至有可能实现吗?任何帮助将不胜感激。
答案 0 :(得分:0)
想通了。
{
"query": {
"nested": {
"path": "dictionaryProximities",
"query": {
"bool": {
"must": [
{"match": {"dictionaryProximities.topicDictionaryName": "Windows and Doors"}},
{"range": {"dictionaryProximities.proximity": {"gt": "0.6", "lt": "1.0"}}}
]
}
}
}
}
}