Как добавить автозаполнение в следующий поиск Elasti c? - PullRequest
1 голос
/ 18 февраля 2020

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

{
  "courts_2": {
    "mappings": {
      "properties": {
        "author": {
          "type": "text",
          "analyzer": "my_analyzer"
        },
        "bench": {
          "type": "text",
          "analyzer": "my_analyzer"
        },
        "citation": {
          "type": "text"
        },
        "content": {
          "type": "text",
          "fields": {
            "standard": {
              "type": "text"
            }
          },
          "analyzer": "my_analyzer"
        },
        "court": {
          "type": "text"
        },
        "date": {
          "type": "text"
        },
        "id_": {
          "type": "text"
        },
        "title": {
          "type": "text",
          "fields": {
            "standard": {
              "type": "text"
            }
          },
          "analyzer": "my_analyzer"
        },
        "verdict": {
          "type": "text"
        }
      }
    }
  }
}

Ниже приведен код, который я использовал для настроек:

{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "my_analyzer": {
            "tokenizer": "standard",
            "filter": [
              "lowercase",
              "my_metaphone"
            ]
          }
        },
        "filter": {
          "my_metaphone": {
            "type": "phonetic",
            "encoder": "metaphone",
            "replace": true
          }
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "author": {
        "type": "text",
        "analyzer": "my_analyzer"
      },
      "bench": {
        "type": "text",
        "analyzer": "my_analyzer"
      },
      "citation": {
        "type": "text"
      },
      "court": {
        "type": "text"
      },
      "date": {
        "type": "text"
      },
      "id_": {
        "type": "text"
      },
      "verdict": {
        "type": "text"
      },
      "title": {
        "type": "text",
        "analyzer": "my_analyzer",
        "fields": {
          "standard": {
            "type": "text"
          }
        }
      },
      "content": {
        "type": "text",
        "analyzer": "my_analyzer",
        "fields": {
          "standard": {
            "type": "text"
          }
        }
      }
    }
  }
}

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

Real Madrid v/s Barcelona 
Real Madrid Team 
Real Madrid Coach 
Barcelona v/s Man City 
Sevilla Home Ground
Man Utd. recent results

Теперь, если кто-то ищет Rea, то следует предложить следующие автозаполнения:

Real Madrid v/s Barcelona 
Real Madrid Team 
Real Madrid Coach 

Это основано на поисках, сделанных всеми пользователями до даты, а не одним пользователем. Кроме того, я хотел бы проанализировать, какие основные запросы были сделаны, скажем, в прошлом месяце.

Я использую ElasticSearch версии 7.1 на AWS Служба Elasticsearch.

Редактировать: Я значительно отклонился от первоначального вопроса, поскольку моя потребность немного изменилась. Я прошу прощения, если это вызвало какие-либо проблемы.

...