package org.xbib.elasticsearch.index.mapper.reference.gnd; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.elasticsearch.action.search.SearchAction; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.support.WriteRequest; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; import org.junit.Test; import org.xbib.elasticsearch.NodeTestUtils; import java.io.IOException; import java.io.InputStreamReader; import static org.elasticsearch.common.io.Streams.copyToString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; /** * */ public class GNDReferenceMappingTests extends NodeTestUtils { private static final Logger logger = LogManager.getLogger(GNDReferenceMappingTests.class.getName()); @Test public void testGND() throws IOException { startCluster(); try { try { client().admin().indices().prepareDelete("title", "gnd").execute().actionGet(); } catch (Exception e) { logger.warn(e.getMessage()); } client().admin().indices().prepareCreate("gnd") .setSettings(copyToStringFromClasspath("gnd-settings.json"), XContentType.JSON) .addMapping("gnd", copyToStringFromClasspath("gnd-mapping.json"), XContentType.JSON) .execute().actionGet(); client().prepareIndex("gnd", "gnd", "11862444X") .setSource(copyToStringFromClasspath("gnd-document.json"), XContentType.JSON) .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE) .execute().actionGet(); client().admin().indices().prepareCreate("title") .setSettings(copyToStringFromClasspath("title-settings.json"), XContentType.JSON) .addMapping("title", copyToStringFromClasspath("title-mapping.json"), XContentType.JSON) .execute().actionGet(); client().prepareIndex("title", "title", "(DE-605)008427902") .setSource(copyToStringFromClasspath("title-document-1.json"), XContentType.JSON) .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE) .execute().actionGet(); client().prepareIndex("title", "title", "(DE-605)017215715") .setSource(copyToStringFromClasspath("title-document-2.json"), XContentType.JSON) .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE) .execute().actionGet(); SearchRequestBuilder searchRequestBuilder = new SearchRequestBuilder(client(), SearchAction.INSTANCE) .setIndices("title") .setTypes("title") .setQuery(QueryBuilders.matchPhraseQuery("bib.namePersonal", "Tucholsky, Kurt")); SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); logger.info("hits = {}", searchResponse.getHits().getTotalHits()); for (SearchHit hit : searchResponse.getHits().getHits()) { logger.info("kurt tucholsky = {}", hit.getSource()); } assertEquals(1, searchResponse.getHits().getTotalHits()); searchRequestBuilder = new SearchRequestBuilder(client(), SearchAction.INSTANCE) .setIndices("title") .setTypes("title") .setQuery(QueryBuilders.matchPhraseQuery("bib.namePersonal", "Panter, Peter")); searchResponse = searchRequestBuilder.execute().actionGet(); logger.info("hits = {}", searchResponse.getHits().getTotalHits()); assertTrue(searchResponse.getHits().getTotalHits() > 0); for (SearchHit hit : searchResponse.getHits().getHits()) { logger.info("peter panter = {}", hit.getSource()); } assertEquals(1, searchResponse.getHits().getTotalHits()); searchRequestBuilder = new SearchRequestBuilder(client(), SearchAction.INSTANCE) .setIndices("title") .setTypes("title") .setQuery(QueryBuilders.matchQuery("bib.namePersonal", "Panter, Peter")) .setExplain(true); searchResponse = searchRequestBuilder.execute().actionGet(); logger.info("hits = {}", searchResponse.getHits().getTotalHits()); assertTrue(searchResponse.getHits().getTotalHits() > 0); for (SearchHit hit : searchResponse.getHits().getHits()) { logger.info("schroeder = {}", hit.getSource()); logger.info(hit.getExplanation().toString()); } assertEquals(1, searchResponse.getHits().getTotalHits()); try { client().admin().indices().prepareDelete("title", "gnd").execute().actionGet(); } catch (Exception e) { logger.warn(e.getMessage()); } } finally { stopCluster(); } } private String copyToStringFromClasspath(String path) throws IOException { return copyToString(new InputStreamReader(getClass().getResource(path).openStream(), "UTF-8")); } }