完全多项匹配

时间:2017-10-25 14:52:58

标签: elasticsearch exact-match

我坚持在Elasticsearch中进行搜索。我试图找到一个匹配多个术语的结果。这似乎很简单,但我无法找到正确的方法。

要使用单个字词进行搜索,请启动以下搜索:

{
    "query":
        "term": {
            "name. keyword."
                "value":"Will"
            }
        }
    }
}

效果很好。

要使用多个术语进行搜索,我尝试了许多类似于以下内容的内容:

{
    "query":
        "term":[{{
            "name. keyword."
                "value":"Will"
            }
        }, {
            "lastname. keyword."
                "value":"Smith"
            }
        }]
    }
}

但它返回错误。在最好的情况下,我设法让所有的Will和所有的Smith回来了,其中包括#34; Will Smith",我正在寻找的那个但是我会喜欢摆脱所有不符合所有要求的人。

我的映射如下:

{
    "dataset": {
        "mappings": {
            "data": {
                "properties": {
                    "name": {
                        "type": "text",
                        "fields": {
                            "keyword": {
                                "type": "keyword",
                                "ignore_above": 256
                            }
                        }
                    },
                    "lastname": {
                        "type": "text",
                        "fields": {
                            "keyword": {
                                "type": "keyword",
                                "ignore_above": 256
                            }
                        }
                    }
                }
            }
        }
    }
}

是否有可能得到我想要做的事情?

1 个答案:

答案 0 :(得分:1)

尝试Bool Query

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "name.keyword": "Will"
          }
        },
        {
          "term": {
            "lastname.keyword": "Smith"
          }
        }
      ]
    }
  }
}