Я хотел бы найти элементы внутри «виртуального раздела», где элементы разделены или принадлежат идентификатору группы,
Например: в моей системе несколько организаций, у каждой организации есть свои продукты (активы), я хотел бы разрешить каждому члену организации искать продукты в своей организации, результаты поиска включают только элементы, принадлежащие его организации, но не принадлежащие другим организациям ...
Что-то вроде:
SELECT * FROM assets WHERE org_id = 'GUID' AND (name LIKE '%QUERY%' OR category LIKE '%QUERY%'OR tag LIKE '%QUERY%')
вот настройка индекса:
PUT assets {
"settings": {
"analysis": {
"filter": {
"nGram_filter": {
"type": "ngram",
"min_gram": 2,
"max_gram": 20,
"token_chars": [
"letter",
"digit",
"punctuation",
"symbol"
]
}
},
"analyzer": {
"nGram_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"asciifolding",
"nGram_filter"
]
},
"whitespace_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
},
"mappings": {
"asset": {
"properties": {
"name": {
"type": "text",
"analyzer": "nGram_analyzer",
"search_analyzer": "whitespace_analyzer"
},
"categories": {
"type": "text",
"analyzer": "nGram_analyzer",
"search_analyzer": "whitespace_analyzer"
},
"genres": {
"type": "text",
"analyzer": "nGram_analyzer",
"search_analyzer": "whitespace_analyzer"
},
"tags": {
"type": "text",
"analyzer": "nGram_analyzer",
"search_analyzer": "whitespace_analyzer"
}
}
}
}
}
Я предполагаю, что настройки индекса для org_id не должны включать analysis
или analyzer
, потому что я хочу фильтровать по точному значению, но я делаюхотите установить индекс, похожий на индекс битовой карты, для создания некоторых подгрупп, скажем «виртуальный раздел», разделенных на org_id.
затем, как должен выглядеть org_id в сегменте mappings
?