Преобразование строки запроса QS в облачный запрос Elastic - PullRequest
0 голосов
/ 22 января 2019

Можно ли как-нибудь преобразовать строку запроса, используя qs npm , в строку запроса эластичного облака?которые поддерживают все виды вложенных параметров запроса, больше чем, меньше, чем значения между диапазонами всех видов запросов?

любой модуль npm, код git-хаба или фрагмент кода, который это делает?Пример: для моего API я поддерживаю все виды параметров запроса, поддерживаемые модулем qs npm, где мой API поиска извлекается из эластичного облака.

, поэтому в случае, если я получаю запрос как

?title=Resurgence&causes=General&location.city=Mysuru&latitude=12.9803047&longitude=77.62949349999997&distance=50000&pageNumber=0&pageSize=10& organisation._id=5c36dd152edb5028fd7655a4

, тогда строка запроса будет преобразована в объект json модулем qs npm, и он даст объект json следующим образом:

{"title":"Resurgence","causes":"General","location.city":"Mysuru","latitude":"12.9803047","longitude":"77.62949349999997","distance":"50000","pageNumber":"0","pageSize":"10","organisation._id":"5c36dd152edb5028fd7655a4"}

Где при поиске в упругом поиске я предполагаю преобразовать его в упругий поисковый запросвозражать следующим образом.Итак, я просто искал модуль npm, который преобразует строку запроса json модуля qs в тело запроса эластичного облака?

{
  "index": "researchArticles",
  "from": 0,
  "size": 10,
  "body": {
    "query": {
      "bool": {
        "must": [
          {
            "match": {
              "status": "PUBLISHED"
            }
          },
          {
            "match": {
              "title": {
                "query": "Resurgence",
                "operator": "or",
                "prefix_length": 1
              }
            }
          },
          {
            "match": {
              "causes": {
                "query": "General",
                "operator": "or",
                "prefix_length": 1
              }
            }
          },
          {
            "match": {
              "location.city": {
                "query": "Bengaluru",
                "operator": "or",
                "prefix_length": 1
              }
            }
          },
          {
            "match": {
              "pageNumber": {
                "query": "0",
                "operator": "or",
                "prefix_length": 1
              }
            }
          },
          {
            "match": {
              "pageSize": {
                "query": "10",
                "operator": "or",
                "prefix_length": 1
              }
            }
          },
          {
            "match": {
              "organisation._id": {
                "query": "5c36dd152edb5028fd7655a4",
                "operator": "or",
                "prefix_length": 1
              }
            }
          }
        ],
        "should": {
          "range": {
            "startDate": {
              "gte": "now"
            }
          }
        },
        "filter": {
          "geo_distance": {
            "distance": "50000",
            "location.geoSpatial": {
              "lat": "12.9803047",
              "lon": "77.62949349999997"
            }
          }
        }
      }
    },
    "sort": [
      {
        "_geo_distance": {
          "location.geoSpatial": "12.9803047,77.62949349999997",
          "order": "asc",
          "unit": "m"
        }
      }
    ]
  }
}
...