Есть ли способ сделатьasticsearch (5.5) автозаполненным поиском по ключевому слову и атрибуту? - PullRequest
1 голос
/ 27 июня 2019

Допустим, у нас есть такие атрибуты, как ["first name", "phone number", "city", "last name"]. Возможно ли для elasticsearch возвращать предложения по каждому атрибуту на основе 1 ключевого слова. Например, поиск "phil" может вернуть Фила в качестве имени, Филадельфию для города, philer в качестве фамилии?

Я исследовал, но не смог найти именно то, что искал. Я пытаюсь избежать изменения максимальных предложений с автозаполнения до 100 suggestions и обработки их либо в моем коде внешнего интерфейса Vue, либо в коде внутреннего кода Java.

Сейчас я использую подсказку для завершения, а elasticsearch - это sorted based on weight. Как и в случае, если максимальное количество предложений равно 10 или определенному числу, предложения всегда совпадают с 10 предложениями для каждого ключевого слова. Есть ли способ рандомизировать это так, чтобы предложения могли быть разными? Я также сейчас использую упругий поиск 5.5

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

1 Ответ

0 голосов
/ 28 июня 2019

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

Если ваше отображение выглядит примерно так:

{
  "mappings": {
    "properties": {
      "first_name": {
        "type": "text",
        "fields": {
          "suggest": {
            "type": "completion"
          }
        }
      },
      "city": {
        "type": "text",
        "fields": {
          "suggest": {
            "type": "completion"
          }
        }
      }
    }
  }
}

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

POST myindex/_search
{
    "suggest": {
        "first_name_suggest" : {
            "prefix" : "phil", 
            "completion" : { 
                "field" : "first_name.suggest" 
            }
        },
        "city_suggest" : {
            "prefix" : "phil", 
            "completion" : { 
                "field" : "city.suggest" 
            }
        }
    }
}

См. Документацию для получения дополнительной информации о подсказки к завершению или подсказки в целом .

...