Elasticsearch - 在每次搜索中提升特定文档

时间:2017-11-02 11:18:11

标签: elasticsearch

我对Elasticsearch很新。我用它来过滤并在查询时提升一些字段。这是用于提升和过滤的代码部分:

"query": {
"bool": {
  "must": [
    {
      "bool": {
        "should": [
          {
            "multi_match": {
              "type": "best_fields",
              "query": "exampleKeyword",
              "fields": [
                "exampleField1^0",
                "exampleField2^50",
                "exampleField3^10",
                "exampleField4^10",
                "exampleField5^5"                  
              ],
              "boost": 50
            }
          }]
      }
    }
  ],
  "filter": [
    {
      "bool": {
        "must": [
          {
            "bool": {
              "must": [
                {
                  "term": {
                    "bla": {
                      "value": ""
                    }
                  }
                }
              ]
            }
          }, {
            "term": {
              "active": {
                "value": "true"
              }
            }
          },
          {
            "range": {
              "closingDate": {
                "gte": "201710310000",
                "lte": "999912312359"
              }
            }
          },

现在我想提一些具体的文件。我将给出一个整数数组,例如Field6,如果我的搜索结果包含数组的元素,那么这些文档应该得到提升,我不知道,我的规模是100。

我该怎么做?最后我不想扩展结果集。如果结果包含这些ID,只想增加所需的ID。

1 个答案:

答案 0 :(得分:1)

使用function_score,你可以围绕以下几行做点什么:

{
  "query": {
    "bool": {
      "must": [
        {
          "function_score": {
            "query": {
              "bool": {
                "should": [
                  {
                    "multi_match": {
                      "type": "best_fields",
                      "query": "bla",
                      "fields": [
                        "exampleField1^0",
                        "exampleField2^50",
                        "exampleField3^10",
                        "exampleField4^10",
                        "exampleField5^5"
                      ],
                      "boost": 50
                    }
                  }
                ]
              }
            },
            "functions": [
              {
                "filter": {
                  "ids": {
                    "values": [
                      1,
                      5
                    ]
                  }
                },
                "weight": 10
              }
            ],
            "score_mode": "max",
            "boost_mode": "multiply"
          }
        }
      ],
      "filter": [
        {
          "bool": {
            "must": [
              {
                "bool": {
                  "must": [
                    {
                      "term": {
                        "bla": {
                          "value": ""
                        }
                      }
                    }
                  ]
                }
              },
              {
                "term": {
                  "active": {
                    "value": "true"
                  }
                }
              },
              {
                "range": {
                  "closingDate": {
                    "gte": "201710310000",
                    "lte": "999912312359"
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}