Комбиниране на полета в индекс

Става въпрос за намаляване на индексното пространство, без да се намалява гъвкавостта на търсенето. Имам полета A и B. Искам да търся полета A, B или блок от A и B със заявка за термини X Y. За да направя това, имам следните полета в моя индекс:

field A: A
field B: B
field AB: A + B

Полученият индекс дублира данни и губи място. Има ли начин да имам само полета A и B в моя индекс, но все пак да разреша търсене на поле AB? Това е различно от търсене на поле A или поле B (попадение се връща, когато A съдържа X Y или B съдържа X Y) и е различно от търсене на поле A и поле B (попадение се връща, когато A съдържа X Y и B съдържа X Y ). Искам да хвана ситуацията, в която A съдържа X и B съдържа Y, например. Моля за съвет.


person user2104778    schedule 26.04.2014    source източник
comment
Написах персонализиран индексатор в Python, за да направя това в моя проект. Проучете данни от базата данни, комбинирайте полета, когато се подготвяте за изпращане до ES, след това групово индексирайте данни.   -  person Nathan Smith    schedule 26.04.2014
comment
Радвам се за теб, но как го направи?   -  person user2104778    schedule 27.04.2014
comment
в кодирането, можете ли да намерите X и Y стойност поотделно???   -  person BlackPOP    schedule 27.04.2014
comment
Не разбирам BlackPOP.   -  person user2104778    schedule 28.04.2014


Отговори (1)


Имате всякакви настройки за заявка с множество съвпадения, за да постигнете това, което искате.
Вижте тук - http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html

person Rotem Hermon    schedule 28.04.2014