Мне нужно выполнить эластичный поисковый запрос, где хотя бы один из нескольких терминов в нескольких полях является обязательным, а другой - в поле обязательным - PullRequest
0 голосов
/ 23 апреля 2019

Я хочу выполнить запрос, эквивалентный следующему коду при упругом поиске

if((creator==2 || creator==4 || assignee==8 || assignee==10) && (zone=="Hyderabad") &&(message=="Hello World"))
{
    return document;
}

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Я нашел решение следующим образом:

{
    "query": {
      "bool": {
        "should": [
          {"term": {"creatorId": 3099}},
          {"term": {"assignedToId": 3099}},
          {"term": {"creatorId": 3111}},
          {"term": {"assignedToId": 3111}}
        ],
        "minimum_should_match": 1,
        "must": [
            {"query_string": {"fields": ["message"],"query": "Hello World"}},
            {"query_string": {"fields": ["zone"],"query": "Hyderabad"}}
            ]
      }
    },
    "sort": [
        {"id": {"order": "desc"}}
    ],
    "from": 0,
    "size": 10
  }
0 голосов
/ 23 апреля 2019

Ниже приведен запрос, что вы ищете.Я использовал Bool Query , например, must как AND операция и should как OR операция.

POST <your_index_name>/_search
{  
   "query":{  
      "bool":{  
         "must":[  
            {  
               "match":{  
                  "zone":"hyderabad"
               }
            },
            {  
               "match":{  
                  "message":"hello world"
               }
            },
            {  
               "bool":{  
                  "should":[  
                     {  
                        "match":{  
                           "creator":2
                        }
                     },
                     {  
                        "match":{  
                           "creator":4
                        }
                     },
                     {  
                        "match":{  
                           "assignee":6
                        }
                     },
                     {  
                        "match":{  
                           "assignee":8
                        }
                     }
                  ],
                  "minimum_should_match":1
               }
            }
         ]
      }
   }
}

Также обратите внимание, что я использовал все доступные для поиска слова в маленьких заглавных буквах.Чтобы узнать, зачем читать о Анализ .

Я бы также посоветовал вам потратить некоторое время на чтение следующих ссылок: Тип данных текста и Тип данных ключевых слов

Надеюсь, это поможет!

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