Не удалось получить шаблонный запрос для работы с несколькими полями вasticsearch - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь заставить подстановочный знак работать с несколькими полями в упругом поиске, но, похоже, он не работает.Когда я использую это, он просто возвращает результат, который совпадает с отправкой пустого запроса.Вот мой запрос:

{
  "sort": [
    {
      "_score": {
        "order": "desc"
      }
    },
    {
      "ratingCount": {
        "order": "desc"
      }
    },
    {
      "avgRating": {
        "order": "desc"
      }
    }
  ],
  "from": 20,
  "size": 20,
  "query": {
    "bool": {
      "filter": {
        "term": {
          "cities": "59c95a090338d4fe4aea6af8"
        }
      },
      "should": [
        {
          "wildcard": {
            "firstName": "Mich*"
          }
        },
        {
          "wildcard": {
            "lastName": "Mich*"
          }
        }
      ]
    }
  }
}

1 Ответ

0 голосов
/ 27 октября 2018

Может быть, свойство from является вашей проблемой?Посмотрите документацию From / Size .От 20 означает, что смещение от первого результата равно 20. Это означает, что вам нужно иметь как минимум 21 результат в целом, чтобы увидеть одну запись в вашем запросе.

Взгляните на пример.Сначала поставьте три записи:

PUT index/_doc/1
{
  "cities": "59c95a090338d4fe4aea6af8",
  "firstName": "Michael",
  "lastName": "Jordan"
}

PUT index/_doc/2
{
  "cities": "59c95a090338d4fe4aea6af8",
  "firstName": "Tomasz",
  "lastName": "Michalowicz"
}

PUT index/_doc/3
{
  "cities": "59c95a090338d4fe4aea6af8",
  "firstName": "Bartosz",
  "lastName": "Michalski"
}

А затем выполните поиск по вашему запросу и для from установите значение 3:

GET _search
{
  "from": 3,
  "query": {
    "bool": {
      "filter": {
        "term": {
          "cities": "59c95a090338d4fe4aea6af8"
        }
      },
      "should": [
        {
          "wildcard": {
            "firstName": "Mich*"
          }
        },
        {
          "wildcard": {
            "lastName": "Mich*"
          }
        }
      ]
    }
  }
}

Ответ будет:

{
  "took": 15,
  "timed_out": false,
  "_shards": {
    "total": 10,
    "successful": 10,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": 0,
    "hits": []
  }
}

Вы можете видеть, что нет видимых hits, но total равно 3.

Затем измените from на 2 и повторите запрос:

GET _search
{
  "from": 2,
  "query": {
    "bool": {
      "filter": {
        "term": {
          "cities": "59c95a090338d4fe4aea6af8"
        }
      },
      "should": [
        {
          "wildcard": {
            "firstName": "Mich*"
          }
        },
        {
          "wildcard": {
            "lastName": "Mich*"
          }
        }
      ]
    }
  }
}

Ответ:

{
  "took": 13,
  "timed_out": false,
  "_shards": {
    "total": 10,
    "successful": 10,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": 0,
    "hits": [
      {
        "_index": "twitter",
        "_type": "_doc",
        "_id": "3",
        "_score": 0,
        "_source": {
          "cities": "59c95a090338d4fe4aea6af8",
          "firstName": "Bartosz",
          "lastName": "Michalski"
        }
      }
    ]
  }
}

Затем измените from на 0 и повторите запрос:

GET _search
{
  "from": 0,
  "query": {
    "bool": {
      "filter": {
        "term": {
          "cities": "59c95a090338d4fe4aea6af8"
        }
      },
      "should": [
        {
          "wildcard": {
            "firstName": "Mich*"
          }
        },
        {
          "wildcard": {
            "lastName": "Mich*"
          }
        }
      ]
    }
  }
}

Ответ:

{
  "took": 8,
  "timed_out": false,
  "_shards": {
    "total": 10,
    "successful": 10,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": 0,
    "hits": [
      {
        "_index": "twitter",
        "_type": "_doc",
        "_id": "2",
        "_score": 0,
        "_source": {
          "cities": "59c95a090338d4fe4aea6af8",
          "firstName": "Tomasz",
          "lastName": "Michalowicz"
        }
      },
      {
        "_index": "twitter",
        "_type": "_doc",
        "_id": "1",
        "_score": 0,
        "_source": {
          "cities": "59c95a090338d4fe4aea6af8",
          "firstName": "Michael",
          "lastName": "Jordan"
        }
      },
      {
        "_index": "twitter",
        "_type": "_doc",
        "_id": "3",
        "_score": 0,
        "_source": {
          "cities": "59c95a090338d4fe4aea6af8",
          "firstName": "Bartosz",
          "lastName": "Michalski"
        }
      }
    ]
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...