Как объединить диапазон и запрос на множественное совпадение вasticsearch - PullRequest
0 голосов
/ 05 июля 2019

У меня есть поле в излечения.У которого есть поле даты и два строковых поля. Я хочу применить диапазон даты и фильтр соответствия к двум строковым полям. Как применить это?

Допустим, у меня есть этот документ

movies
{
  name    :"titanic",
  director:"james Cameron",
  releaseDate:"06-07-1997"
}

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Как насчет логического запроса с фильтрами? редактировать, так как было запрошено множественное совпадение

PUT /movies
{
  "mappings": {
    "properties": {
      "director": {
        "type": "text"
      },
      "name": {
        "type": "text"
      },
      "releaseDate": {
        "type": "date",
        "format": "dd-MM-yyyy"
      }
    }
  }
}

PUT movies/_doc/1
{
    "name": "titanic",
    "director": "james Cameron",
    "releaseDate": "06-07-1997"
}

GET /movies/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "releaseDate": {
              "gte": "05-07-1990",
              "lte": "05-07-2000"
            }
          }
        },
        {
          "multi_match": {
            "query": "james",
            "fields": ["director", "name"]
          }
        }
      ]
    }
  }
}

редактировать: В соответствии с комментарием, вы также можете сделать запрос условий вместо множественного совпадения:

GET /movies/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "releaseDate": {
              "gte": "05-07-1990",
              "lte": "05-07-2000"
            }
          }
        },
        {
          "term": {
            "name": "titanic"
          }
        },
        {
          "term": {
            "director": "james cameron"
          }
        }
      ]
    }
  }
}
0 голосов
/ 05 июля 2019

Попробуйте что-то вроде этого

query: {
          bool: {
            filter: [
              {
                multi_match: {
                  query: query,
                  fields: ['description^30','material^10']
                }
              },
              {
                range: {
                  purchased: { gte: 1000}
                }
              }
            ]
          }
        },
        field_value_factor: {
          field: "purchased"
        }
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...