首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch:数组的交集

Elasticsearch:数组的交集
EN

Stack Overflow用户
提问于 2017-05-10 20:09:30
回答 1查看 944关注 0票数 1

假设我的文档是这样的

代码语言:javascript
复制
{
    "salary": {
        "max": 1572,
        "min": 682
    },
    "skills": [
        "Modula-3",
        "Max/MSP",
        "Arduino",
        "SPARK",
        "PL/SQL",
        "Processing",
        "Go",
        "Mathematica",
        "Modula-2",
        "IDL",
        "Heron",
        "Scheme"
    ],
    "company": "Merck",
    "experience": 0,
    "role": "Airport Security Screener",
    "cities": [
        "Ahmedabad",
        "Mangaluru",
        "Malegaon",
        "Bokaro Steel City",
        "Vadodara",
        "Kollam"
    ]
}

我想做一个查询,在这个查询中,我将提供一组城市,并根据交叉点的基数获得排序的文档。也就是说,假设我的城市集合是["Ahmedabad", "Mangaluru"],那么这个查询与上面的文档的交集基数是2。我的查询应该是什么?

样例响应

代码语言:javascript
复制
{"_score": 4.0202227, "cities": ["Ahmedabad","Mangaluru","Visakhapatnam", "Vijayawada"]}
{"_score": 2.27, "cities": ["Ahmedabad","Visakhapatnam", "Vijayawada"]}
{"_score": 1.79, "cities": ["Mangalauru","Vijayawada", "delhi", "bombay"]}

我使用的是elasticsearch 5.2.2

EN

回答 1

Stack Overflow用户

发布于 2017-05-11 04:52:57

也许像这样的东西会对你有帮助?

代码语言:javascript
复制
{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "cities": "Ahmedabad Mangaluru"
        }
      },
      "functions": [
        {
          "filter": {
            "match": {
              "cities": "Ahmedabad"
            }
          },
          "weight": 1
        },
        {
          "filter": {
            "match": {
              "cities": "Mangaluru"
            }
          },
          "weight": 1
        }
      ],
      "score_mode": "sum"
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43892102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档