В Elasticsearch 6.3 я пытаюсь применить запрос биграммы в поле вложенного объекта, который генерирует данные биграммы путем объединения всех значений во вложенном поле. Ниже приведены сопоставления.
PUT /testindex
{
"settings": {
"analysis": {
"analyzer": {
"my_shingles_test": {
"tokenizer": "standard",
"filter": [
"shingles"
]
}
},
"filter": {
"shingles": {
"type": "shingle",
"min_shingle_size": 2,
"max_shingle_size": 3,
"output_unigrams": false
}
}
}
},
"mappings": {
"default" :{
"properties" : {
"book_name":{
"type":"text"
},
"book_id":{
"type": "integer"
},
"book_attributes":{
"type":"nested",
"properties": {
"search_term":{
"type":"nested"
"analyzer": "my_shingles_test"
}
}
}
}
Here's the sample data:
{
"book_name":"xyz",
"book_id":123,
"book_attributes":[
{
"search_term":[
"paperback"
]
},
{
"search_term":[
"best selling"
]
}
]
},
{
"book_name":"abc",
"book_id":456,
"book_attributes":[
{
"search_term":[
"hardcover"
]
},
{
"search_term":[
"best author"
]
},
{
"search_term":[
"best selling"
]
}
]
}
Здесь я хочу создать биграмму и триграмму для всего поискового термина документа как [мягкая обложка, лучшая продажа, мягкая обложка, лучшая продажа]. Когда кто-то ищет книгу в мягкой обложке, он должен вернуть только книгу с 123 ID. Я пытался, но он не возвращает ожидаемых результатов.