elasticsearch 按多个字段匹配的查询,elasticsearch,nosql,elasticsearch,Nosql" /> elasticsearch 按多个字段匹配的查询,elasticsearch,nosql,elasticsearch,Nosql" />

elasticsearch 按多个字段匹配的查询

elasticsearch 按多个字段匹配的查询,elasticsearch,nosql,elasticsearch,Nosql,我是弹性搜索的新手,我想写一个关于两个字段的查询。我的意思是字段的内容包含指定的子字符串。我有一个包含字段的文档,如下所示: name: n tag: t { "query": { "bool": { "must": [ { "match": { "name": "n" } }, { "match": { "tag"

我是弹性搜索的新手,我想写一个关于两个字段的查询。我的意思是字段的内容包含指定的子字符串。我有一个包含字段的文档,如下所示:

name: n
tag: t
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "n"
          }
        },
        {
          "match": {
            "tag": "t"
          }
        }
      ]
    }
  }
}
我试过这个:

/_search -d '
{
    "query": {
        "match": {
             "name": "n",
             "tag": "t"
        }
    }
}
但是查询会导致以下错误:

[匹配]以简化形式解析的查询,具有直接字段名,但 包含的选项不仅仅是字段名,还可能使用 “选项”窗体,带有“查询”元素


在elasticsearch中有没有办法做到这一点?

您需要在
bool/must
查询中包含两个
match
查询,如下所示:

name: n
tag: t
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "n"
          }
        },
        {
          "match": {
            "tag": "t"
          }
        }
      ]
    }
  }
}

如何从我的每个字段中获得最少数量的记录(比如至少5条)。该查询似乎只在所有字段中都有值时匹配,而不是在其中一个字段中找到值时匹配。Matthewden这不是OP的需要。但是如果您有不同的需要,请随意创建一个新问题,或者,如果您想要的是just或semantics,那么只需将
must
替换为
should
,并添加
minimum\u should\u match:1
即可