Найти вхождение термина в упругом поиске - PullRequest
0 голосов
/ 12 сентября 2018

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

@Document(indexName = "autosuggest", type = "autosuggest")
public class Autosuggest {

@Id
@Field(pattern ="id")
private String id;

@Field(pattern ="completion")
private Completion completion;

@Field(pattern ="occurence")
private Integer occurence;

public String getId() {
    return id;
}

public Completion getCompletion() {
    return completion;
}

public void setCompletion(Completion completion) {
    this.completion = completion;
}

public Integer getOccurence() {
    return occurence;
}

public void setOccurence(Integer occurence) {
    this.occurence = occurence;
}

}

Объект завершения

public class Completion {

private List<String> input;
private Integer weight;

public List<String> getInput() {
    return input;
}
public void setInput(List<String> input) {
    this.input = input;
}
public Integer getWeight() {
    return weight;
}
public void setWeight(Integer weight) {
    this.weight = weight;
}
public Completion(List<String> input, Integer weight) {
    super();
    this.input = input;
    this.weight = weight;
}
}

Пример объекта в упругом поиске

  {
    "_index" : "autosuggest",
    "_type" : "autosuggest",
    "_id" : "BUj0zGUBr5AQqSH41l0m",
    "_score" : 1.0,
    "_source" : {
      "completion" : {
        "input" : [
          "Casual Shirts for Men"
        ],
        "weight" : 2
      },
      "occurence" : 1
    }
  }

Как я могу обновить вхождение, если термин уже проиндексирован в упругом поиске?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Это работает:

  "query": {
     "match": {
         "completion": "Casual Shirts for Men"
      }
  }
0 голосов
/ 12 сентября 2018

Публикация этого ответа, так как я не могу оставить комментарий.

@ Priancy: Вы использовали неверный запрос. Пожалуйста, найдите правильный запрос ниже. Я проверил этот запрос на примере объекта, который вы указали в вопросе.

"query": {
    "match": {
      "completion.input": "Casual Shirts for Men"
    }
}

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

Спасибо

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