Elasticsearch 5:提升 1 个字段

约斯特

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

A型

  • 整数 ID

  • 字符串名称

B型

  • 整数 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"
]

谢谢你。

瓦尔

您需要为类型 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"
                }
              }
            ]
          }
        }
      ]
    }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章