В Elasticsearch, как искать строку в нескольких полях из многоуровневых вложенных объектов

Вы изменяете переменную a, созданную в области функции test(). Если вы хотите изменить фокус a, вы можете сделать:

a = 15

def test():
    global a
    a = a + 1
    print(a)

test()
1
задан Nishant Saini 27 March 2019 в 07:32
поделиться

1 ответ

Поскольку вы хотите, чтобы внутренние совпадения были разными в зависимости от того, где произошло совпадение, т. Е. brands.brand_name или brands.products.title, у вас может быть два запроса - один для названия бренда, а другой - для названия продукта как независимых вложенных запросов. Эти запросы должны быть в предложении should запроса bool. Каждый из вложенных запросов должен иметь свой собственный inner_hits, как показано ниже:

{
  "query": {
    "bool": {
      "should": [
        {
          "nested": {
            "path": "brands",
            "inner_hits": {},
            "query": {
              "term": {
                "brands.brand_name.keyword": "test"
              }
            }
          }
        },
        {
          "nested": {
            "path": "brands.products",
            "inner_hits": {},
            "query": {
              "term": {
                "brands.products.title": "test"
              }
            }
          }
        }
      ]
    }
  },
  "_source": false
}
0
ответ дан Nishant Saini 27 March 2019 в 07:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: