Замените ИЛИ отфильтрованный запрос вasticsearch при обновлении до elasti c -search 5 - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь обновить elasti c -поиск до версии 5. Ранее я использовал elasti c -поиск версии 2. У меня проблемы с преобразованием запроса OR в запрос bool [: should]. Вот как выглядит мой запрос, который работал в ES-2.

 query: {:bool=>{ 
      :should=>[
          {:term=>{:user=>{:term=>70890}}},           
          {:term=>{:assignee=>{:term=>70890}}},
          {:term=>{:participant=>{:term=>70890}}}], 
      :minimum_number_should_match=>1,
      :filter=>[{:bool=> {:must_not=>{:exists=>{:field=>:date}}}},
                {:term=>{:deleted=>false}},                 
                {:or=>{:filters=>[
                    {:term=>{:user=>70890}},                     
                    {:term=>{:assignee=>70890}},
                    {:term=>{:private=>false}}
                ]}
                }
      ]
  }}

Запрос:

{
  "bool": {
    "should": [
      {
        "term": {
          "user": {
            "term": 70890

        }
      },
      {
        "term": {
          "assignee": {
            "term": 70890
          }
        }
      },
      {
        "term": {
          "participant": {
            "term": 70890
          }
        }
      }
    ],
    "minimum_number_should_match": 1,
    "filter": [
      {
        "bool": {
          "must_not": {
            "exists": {
              "field": "date"
            }
          }
        }
      },
      {
        "term": {
          "deleted": false
        }
      },
      {
        "or": {
          "filters": [
            {
              "term": {
                "user": 70890
              }
            },
            {
              "term": {
                "assignee": 70890
              }
            },
            {
              "term": {
                "private": false
              }
            }
          ]
        }
      }
    ]
  }
}

Я хочу заменить {: или => {: filters }} . Я пытался переместить эту часть в запросе: bool [: should], но это дает неправильные результаты.

    q[:bool][:should] << {term: {user: 70890}}
    q[:bool][:should] << {term: {assignee: 70890}}
    q[:bool][:should] << {term: {private: false}}
    q[:bool][:minimum_should_match] = 1

Когда я изменяю imum_should_match = 2 , это меняет результаты. Как мне это исправить?

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