留言板
com.liferay.portal.kernel.search.Document and elasticsearch nested fields
Miguel Ángel Júlvez,修改在7 年前。
com.liferay.portal.kernel.search.Document and elasticsearch nested fields
Junior Member 帖子: 63 加入日期: 11-3-29 最近的帖子
Hi all,
I'd like to index nested fields in elasticsearch (https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-mapping.html) but I don't know how to do it with "com.liferay.portal.kernel.search.Document" class
Something like this additional mapping:
I'm not sure, but if it's not possibledirectoy directly I'm thinking in a workaround with a new "ElasticsearchDocumentFactory" service in order to overwrite "getElasticsearchDocument" and use the actual "com.liferay.portal.kernel.search.Document" class but saving the nested fields using a special naming convention and getting them in "getElasticsearchDocument" method. (because I don't know how to overwrite "com.liferay.portal.kernel.search.Document" without ext environment).
Any idea?
Thanks
Best regards
I'd like to index nested fields in elasticsearch (https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-mapping.html) but I don't know how to do it with "com.liferay.portal.kernel.search.Document" class
Something like this additional mapping:
{"LiferayDocumentType": {
"properties": {
"cdu": {
"type": "string",
"index": "not_analyzed",
"store": true
},
"pages": {
"type": "nested",
"properties": {
"pageNumber": {
"type": "integer",
"format": "not_analyzed"
},
"pageContent": {
"type": "string",
"index": "analyzed"
}
}
}
}
}
}
I'm not sure, but if it's not possible
Any idea?
Thanks
Best regards
Miguel Ángel Júlvez,修改在7 年前。
RE: com.liferay.portal.kernel.search.Document and elasticsearch nested fiel (答复)
Junior Member 帖子: 63 加入日期: 11-3-29 最近的帖子
I answer myself.
Yes, it's possible use com.liferay.portal.kernel.search.Document and com.liferay.portal.kernel.search.Field classes in order to get nested objects. Firstable, you need to add an additional mapping with your nested type and after that, you can use the classes named before to develop something similar to this code
Kind regards
Yes, it's possible use com.liferay.portal.kernel.search.Document and com.liferay.portal.kernel.search.Field classes in order to get nested objects. Firstable, you need to add an additional mapping with your nested type and after that, you can use the classes named before to develop something similar to this code
document.addKeyword("cdu", cduValue);
FieldArray pages = new FieldArray("pages");
Field page1 = new Field("null");
Field pageNumber1 = new Field(("pageNumber"));
pageNumber1.setNumeric(true);
pageNumber1.setValue("1");
pageNumber1.setSortable(false);
pageNumber1.setParentField(page1);
pageNumber1.setNumericClass(Integer.class);
Field pageContent1 = new Field(("pageContent"));
pageContent1.setValue("contenido1");
pageContent1.setSortable(false);
pageContent1.setParentField(page1);
page1.addField(pageNumber1);
page1.addField(pageContent1);
Field page2 = new Field("null");
Field pageNumber2 = new Field(("numeroDePagina"));
pageNumber2.setNumeric(true);
pageNumber2.setValue("2");
pageNumber2.setSortable(false);
pageNumber2.setParentField(page2);
pageNumber2.setNumericClass(Integer.class);
Field pageContent2 = new Field(("pageContent"));
pageContent2.setValue("contenido2");
pageContent2.setSortable(false);
pageContent2.setParentField(page2);
page2.addField(pageNumber2);
page2.addField(pageContent2);
pages.addField(page1);
pages.addField(page2);
document.add(pages);
Kind regards
Sunit Chatterjee,修改在6 年前。
RE: com.liferay.portal.kernel.search.Document and elasticsearch nested fiel
Junior Member 帖子: 28 加入日期: 17-5-18 最近的帖子
Thanks Miguel, for the solution.
I was stuck with this issue and wasn't able to find anything in liferay documentation.
Your post helped me resolve the issue... So thanks a ton. :-)
I was stuck with this issue and wasn't able to find anything in liferay documentation.
Your post helped me resolve the issue... So thanks a ton. :-)
Sunit Chatterjee,修改在6 年前。
RE: com.liferay.portal.kernel.search.Document and elasticsearch nested fiel
Junior Member 帖子: 28 加入日期: 17-5-18 最近的帖子
I was able to create the nested mapping via your solution.
Do you have any idea on how we can create the nested search query, using liferay search API, especially providing the inner hits and highlights configurations (since the Nested Query object of liferay does not takes any configurations around inner_hits and highlights)
Do you have any idea on how we can create the nested search query, using liferay search API, especially providing the inner hits and highlights configurations (since the Nested Query object of liferay does not takes any configurations around inner_hits and highlights)