Не могу составить запрос типа (name=aaa AND type=2) OR (name=bbb AND type=3)

Здравствуйте, долго мучался с bool запроса так и не смогу составить запрос типа (name=aaa AND type=2) OR (name=bbb AND type=3)
По памяти вспомнил, что тестировал вот такие запросы, по факту ещё несколько запросов было.

"query": { 
"bool": { 
  "must": [
    { "match": { "name":   "aaaa"}}, 
    { "match": { "type": 2 }}  
  ],
    [
    { "match": { "name":   "bbbb"}}, 
    { "match": { "type": 3 }}  
  ]
}}

"query": { 
    "bool": { 
      "must": [
        { "match": { "name":   "aaaa"}}, 
        { "match": { "type": 2 }}  
      ],
      "must":   [
        { "match": { "name":   "bbbb"}}, 
        { "match": { "type": 3 }}  
      ]
    }}
"query": { 
    "bool": { 
      "should": [{ 
        "bool": {
          "must": [
            { "match": { "name": "aaaa"}}, 
            { "match": { "type": 2 }}  
          ]
        }
      }, {
        "bool": {
          "must": [
            { "match": { "name":   "bbbb"}}, 
            { "match": { "type": 3 }}  
          ]
        }
      }]
    }
  }
}

Большое спасибо, за помощь

Я в своих догадках был близок, к моменту прихода ответа был вот с этой версией запроса. Оставалось додуматься до того что бы обернуть в bool

"query": {  
				"bool": { 
				"should": [{
						"must": [
							{ "match": { "name":   "aaa"        }}, 
							{ "match": { "type": "2" }}  
						]},
						{"must": [
							{ "match": { "name":   "bbbb"        }}, 
							{ "match": { "type": "3" }}  
						]}
						]

						}
			
					}

Подскажите, пожалуйста, если я хочу в поисковой строке поддерживать символы типа "OR" (или можно "||") - мне надо писать свои обработчики, которые будут разбивать запрос и передавать в elastic в подготовленном виде, или есть служебные символы из коробки?

Я писал свои скрипт который разбивает. Но у меня поиск всего по двум term, так что разбивка не очень сложная. Служебных символов я не знаю.

1 Like

Есть запросы simple_query_string и query_string.

2 Likes

Спасибо!!!

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.