Я пытаюсь использовать API-интерфейс Elasticsearch Java для поиска документов с полем, содержащим поисковый термин, а затем упорядочиваю результаты в зависимости от того, как далеко слева находится термин в значении полей.
ЭтоВот как я создаю индекс:
final CreateIndexRequest request = new CreateIndexRequest("index-name");
request.settings(Settings.builder().put("index.max_result_window", MAX_RESULTS));
client.admin().indices().create(request).actionGet();
Вот как я создаю отображение:
{
"part": {
"properties":{
"PartNumber":{
"type":"keyword"
}
}
}
}
Вот как я запрашиваю Elasticsearch:
final CreateIndexRequest request = new CreateIndexRequest("index-name");
request.settings(Settings.builder().put("index.max_result_window", MAX_RESULTS));
client.admin().indices().create(request).actionGet();
client.admin()
.indices()
.preparePutMapping("index-name")
.setType("part")
.setSource(source, XContentType.JSON).execute().actionGet();
final SearchResponse searchResponse = elasticClient.getClient()
.prepareSearch("index-name")
.setQuery(boolQuery().must(wildcardQuery("PartNumber", "*five*")))
.addSort("PartNumber", SortOrder.DESC)
.setTypes("part")
.get();
, который возвращает результаты в следующем порядке:
three five six four five four 11
five 11 three 2 three five four threefive
11 22 three fourfive five four
1 22 three four six five
Однако порядок, в котором я хотел бы, чтобы они находились в следующем порядке:
five 11 three 2 three five four threefive
three five six four five four 11
11 22 three fourfive five four
1 22 three four six five
Где он упорядочивает их в зависимости от того, как далекоСлева от значения встречается термин five
, возможно ли это?