Как добавить И ИЛИ в запросеasticsearch? - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь создать запрос, по которому пользователь может искать определенный товар. Запрос работает с 1 условием, но когда я добавляю другое условие, он дает мне пустой массив.

Что я ищу, используя SQL:

SELECT * FROM products WHERE shop = "shop" AND  title like "%dogs%"

Пример с 1 условием

GET /products/_search?size=25&from=50
{
    "query": {
         "bool": {
             "must": [
                   {"match_phrase": {"shop": "xxxxx.myshopify.com"}}
             ]
         }
     }
 }

/ products / _mapping

{
  "products" : {
    "mappings" : {
      "properties" : {
        "body_html" : {
          ...
        },
        "created_at" : {
          "type" : "date"
        },
        "handle" : {
          ...
        },
        "id" : {
          "type" : "long"
        },
        "image" : {
          ...
        },
        "images" : {
          ...
        },
        "shop" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "title" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
    }
  }
}

Ответы [ 2 ]

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

Для части like запрос с подстановочными знаками поможет.

 {
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "shop": "xxxxx.myshopify.com"
          }
        },
        {
          "wildcard": {
            "title": {
              "value": "*dog*"
            }
          }
        }
      ]
    }
  }
}
0 голосов
/ 26 апреля 2019

Может работать что-то следующее:

GET /products/_search?size=25&from=50
{
    "query": {
         "bool": {
             "must": [
                   {"term": {"shop": "xxxxx.myshopify.com"}},
                   {"match": {"title": "dogs"}},
             ]
         }
     }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...