Elasticsearch 5:Boost 1字段

时间:2017-05-02 13:14:41

标签: elasticsearch boost

我有3种类型,在Elasticsearch 5中索引相同的字段名称:

类型A

  • 整数id

  • 字符串名称

的TypeB

  • 整数id

  • 字符串名称

TypeC - 整数id - 字符串名称

GET myindex/TypeA,TypeB,TypeC/_search
{
  "_source": ["id", "name"],
  "query": {
    "bool": {
      "should": [
        {
          "query_string": {
            "fields": [
              "_all",
              "name^3"
            ],
            "query": "Foo bar*",
            "default_operator": "and"
          }
        }
      ]
    }
  }
}

我只想提升TypeA的名称字段。在这种情况下,TypeA,TypeB和TypeC的名称字段被提升。

我怎样才能提升TypeA的名称?

我正在寻找类似的东西:

"fields": [
     "_all",
     "TypeA.name^3"
]

谢谢。

1 个答案:

答案 0 :(得分:1)

您需要为类型A创建一个子查询,为类型B和C

创建另一个子查询
GET myindex/_search
{
  "_source": [
    "id",
    "name"
  ],
  "query": {
    "bool": {
      "should": [
        {
          "bool": {
            "must": [
              {
                "term": {
                  "_type": "TypeA"
                }
              },
              {
                "query_string": {
                  "fields": [
                    "_all",
                    "name^3"
                  ],
                  "query": "Foo baar*",
                  "default_operator": "and"
                }
              }
            ]
          }
        },
        {
          "bool": {
            "must": [
              {
                "terms": {
                  "_type": [
                    "TypeB",
                    "TypeC"
                  ]
                }
              },
              {
                "query_string": {
                  "fields": [
                    "_all",
                    "name"
                  ],
                  "query": "Foo baar*",
                  "default_operator": "and"
                }
              }
            ]
          }
        }
      ]
    }
  }
}