Как написать запрос Elasticsearch с несколькими условиями - PullRequest
0 голосов
/ 28 января 2020

Нужна помощь в создании запроса ES. Вот пример необработанных JSON документов:

{
  "user_uuid": 1234,
  "keywords": "apple",
  "@timestamp": "2020-01-15",
},
{
  "uuid": 1234,
  "keywords": "google",
  "@timestamp": "2020-01-21",
},
{
  "uuid": 9876,
  "keywords": "youtube",
  "@timestamp": "2020-01-25",
}

Вот пример требования:

{
    "search_groups":[
        {
            "keywords": [
                "google",
                "microsoft",
                "tesla"
            ],
            "time_range": 2020-01-17 - 2020-01-22
        },
        {
            "keywords": [
                "apple",
                "youtube",
                "spotify"
            ],
            "time_range": 2020-01-10 - 2020-01-25
        },

    ]
}

Вот что я хочу достичь на основе вышеуказанного требования:

Я смогу получить уникальный user_uuid , который удовлетворяет всем поисковым группам. То есть

Get unique uuids where both conditions are true:
  (
    (keywords should match one of "google" OR "microsoft" OR "tesla")
    and
    (@timestamp must be between "2020-01-17" and "2020-01-22")
  )
  AND
  (
    (keywords should match one of "apple" OR "youtube" OR "spotify")
    and
    (@timestamp must be between "2020-01-10" and "2020-01-25")
  )

1234 - это user_uuid, который удовлетворяет этому запросу.

Как мне создать его как запрос ES?

...