Как добавить вес в соответствие префикса в ES - PullRequest
0 голосов
/ 25 сентября 2018

Отображение индекса выглядит следующим образом:

"field1": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
 "field2": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
...

Теперь я хочу запросить индекс, чтобы получить обязательные поля (field1, field2), которые содержат слово, например, «яблоко».Ниже приведен DSL (добавьте вес в поле 1):

{
  "aggs": {
    "field1": {
      "terms": {
        "field": "field1.keyword"
      },
      "aggs": {
        "field2": {
          "terms": {
            "field": "field2.keyword",
            "missing": ""
          }
        }
      }
    }
  },
  "query": {
    "bool": {
      "minimum_should_match": 1,
      "should": [
        {
          "multi_match": {
            "query": "apple*",
            "fields": [
              "field1^2",
              "field2"
            ]
          }
        },
        {
          "query_string": {
            "query": "*apple*",
            "fields": [
              "field1^2",
              "field2"
            ]
          }
        },
        {
          "prefix": {
            "field1": {
            "value": "apple"
            }
          }
        }
      ]
    }
  },
  "size": 0
}

Я предпочитаю ранжирование результатов:

  1. точное совпадение

  2. начинаться с «яблока»

  3. содержать «яблоко»

Например:

apple
apple pie
an apple

Но вышеупомянутый DSL не может этого достичь.Я не могу добавить вес к булевому запросу "prefix".И элементы, которые начинаются с «яблока», стоят позади тех, которые просто содержат «яблоко».Как я могу это сделать?Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...