Elasticsearch, игнорировать встроенные детали отображения в GET-ответе - PullRequest
0 голосов
/ 02 июля 2019

Elasticsearch: v7.0
Приложение: Laravel v5.8
Использование Elasticsearch / Elasticsearch (https://github.com/elastic/elasticsearch-php) PHP Library

Мы смогли запросить более 900 000 документов навремя, и мы планируем оптимизировать или сделать наш запрос быстрее.

Мы заметили, что детали встроенных отображений всегда возвращаются с ответом (см. изображение ниже)

enter image description here

ОСНОВНОЙ ВОПРОС
- Есть ли способ игнорировать эти детали отображения, потому что мы думаем, что ответ будет легче, если эти детали выиграют?

ПОБОЧНЫЙ ВОПРОС
- Или, по крайней мере, могу ли я смиренно попросить кого-нибудь научить меня оптимизировать мое приложение Laravel-Elasticsearch?

1 Ответ

1 голос
/ 02 июля 2019

Вы можете игнорировать детали отображения, используя filter_path, который можно использовать для уменьшения ответа, возвращаемого запросом.

например. если вы нажмете:

GET geo/_search
{
  "query": {
    "match_all": {}
  }
}

Вы получите:

{
  "took" : 8,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 206,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "geo",
        "_type" : "_doc",
        "_id" : "ALLE",
        "_score" : 1.0,
        "_source" : {
          "dateFrom" : null,
          "aListRemoved" : [ ],
          "phone" : "0036-1-424-2242",
...

Но если вы используете filter_path:

GET geo/_search?filter_path=hits.hits._source
{
  "query": {
    "match_all": {}
  }
}

Вы получите результаты без количества осколков, отношений попаданий, max_score и т. Д .:

{
  "hits" : {
    "hits" : [
      {
        "_source" : {
          "dateFrom" : null,
          "aListRemoved" : [ ],
          "phone" : "0036-1-424-2242",
    ...

Дополнительный вопрос не может быть дан ответ просто потому, что вам нужно описать, что вы хотите сделать, и какие запросы вы планируете использовать. Чтобы пропустить скоринг (если он вам не нужен) и повысить производительность, вы можете использовать, например, запросы filter и constant_score.

Некоторые рекомендации по настройке кластера ES для скорости поиска описаны здесь

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