Tag: elasticsearch

集成测试弹性搜索,计时问题,未找到文档

我在java中进行了一个集成测试,它做了一些东西,其中包括对弹性搜索数据库的索引操作。 这个弹性搜索数据库已经非常天真地设置(开箱即用的东西实际上,我正在学习fase)。 插入是在门面内完成的,使用java api,也非常天真,示例几乎完全从弹性搜索中复制粘贴,如下所述: http : //www.elasticsearch.org/guide/reference/java-api /index_.html 。 然后我测试我的外观是否正确地完成了它的东西,其中一部分是检查该文档是否确实已插入数据库中。 我再次按照弹性在其网站上描述的方式进行操作: http : //www.elasticsearch.org/guide/reference/java-api/search.html 。 我插入一个带有特定负载的文档,并以相同的方式查找它。 如果我在调试中运行并在facade之后设置了一个断点,那么这个测试是有效的,但如果我没有放置这个断点或者没有在调试中运行,它就会失败并且没有找到结果。 这让我觉得我真的做错了什么。 此外,应用程序本身工作(插入等),因此我的集成测试可能有问题,而不是我的复制粘贴代码。 我想在索引操作返回之后索引还没有真正完成,或者有一些复制在搜索之前没有完成,或类似的东西,但它让我想到了什么,我似乎无法让它解决。 我没有尝试在一个节点和一个碎片上放置弹性,也许那里有一些错误,但我真的没看到究竟是什么,所以我还没走那条路。 就像我说的那样,刚刚开始使用弹性,所以我可能会遗漏一些关键和初学者风格的东西。 如果需要,我可以粘贴我的确切代码,但就像我说的那样归结为在测试中使用来自弹性搜索站点的两个代码片段。 卡斯帕

ElasticSearch索引存在不可行/可靠

我正在围绕ElasticSearch的管理客户端编写一个简单的Java包装器。 为了测试它,我有一个main方法,首先检查索引是否存在(IndicesExistsRequest),如果是,则删除它(DeleteIndexRequest),并再次创建索引。 见下面的代码。 然而,我一直得到一个IndexAlreadyExistsException。 顺便说一句,我试图从命令提示符(通过简单地键入“弹性搜索”)获取节点的客户端。 我已经在nodeBuilder的流畅界面上尝试了各种方法组合,但我似乎无法得到一个。 public static void main(String[] args) { ElasticSearchJavaClient esjc = new ElasticSearchJavaClient(“nda”); if (esjc.indexExists()) { esjc.deleteIndex(); } esjc.createIndex(); URL url = SchemaCreator.class.getResource(“/elasticsearch/specimen.type.json”); String mappings = FileUtil.getContents(url); esjc.createType(“specimen”, mappings); } final Client esClient; final IndicesAdminClient adminClient; final String indexName; public ElasticSearchJavaClient(String indexName) { this.indexName = indexName; esClient = nodeBuilder().clusterName(“elasticsearch”).client(true).node().client(); adminClient = […]

如何在elasticsearch(java API)中使用queryString()?

我正在研究弹性搜索v1.1.1我遇到了搜索查询的问题。我想知道如何解决下面的障碍 这是我的映射 { “token” : { “type” : “string” } } 索引记录中的数据是 { token : “4r5etgg-kogignjj-jdjuty687-ofijfjfhf-kdjudyhd” } 我的搜索是 4r5etgg-kogignjj-jdjuty687-ofijfjfhf-kdjudyhd 我想要记录的完全匹配,我需要使用哪个查询来获得记录的完全匹配 QueryBuilders.queryString() ? 我检查了queryString(),然后我最终确定它对完全匹配没用 请建议我

如何在内部java api或jest api中获取弹性搜索索引的类型名称

我有一个名为demo的索引,它包含不同的类型。 我正在使用弹性搜索java内部api并在我的应用程序中restapi jest。 基本上我想提出这个要求 curl -XGET ‘http:localhost:9200/demo/_mapping’ 有没有办法做到这一点,特别是在开玩笑api? 没有文档可以获取rest client api的映射。 你的建议是什么?

elasticsearch java API:matchAll搜索查询不返回结果?

我有一个弹性搜索运行的内存实例,并做一些探索性编码来学习搜索java API。 我能够将文档提交到索引并使用GET检索它们,但是当我尝试简单的搜索查询时,我没有得到任何结果。 // first, try a get request, to make sure there is something in the index GetResponse results = client.prepareGet(INDEX_NAME, INDEX_TYPE, testID) .execute() .actionGet(); // this assertion succeeds, as we expect it to. assertThat(results.getId()).isEqualTo(testID); // next, try the simplest possible search SearchResponse s1 = client.prepareSearch(INDEX_NAME).setQuery(matchAllQuery()) .execute() .actionGet(); // this assertion fails. why? answer: […]

ElasticSearch在内存中进行测试

我想写一些与ElasticSearch的集成。 为了测试,我想运行内存ES。 我在文档中找到了一些信息,但没有示例如何编写这种测试。 Elasticsearch参考[1.6]»测试»Java测试框架»集成测试«unit testing 我也发现了以下文章,但它没有数据。 使用Elastic Search轻松进行JUnit测试 我看一下如何在内存中启动和运行ES并通过REST API访问它。

如何通过Java API重新索引ElasticSearch

喜欢标题说…… 我读了这篇文章( https://www.elastic.co/blog/changing-mapping-with-zero-downtime ),这个概念很棒,但我很难找到关于如何通过JAVA API做到这一点的合适参考。 我找到了这个插件: https : //github.com/karussell/elasticsearch-reindex ,但看起来像我试图做的有点过分

ElasticSearch一个edgeNGram用于自动完成\ typeahead,是我的search_analyzer被忽略

我有三个带有“userName”字段的文档: ‘briandilley’ ‘briangumble’ ‘briangriffen’ 当我搜索’brian’时,我按照预期得到了所有三个,但是当我搜索’briandilley’时,我仍然得到了所有三个回来。 分析API告诉我它正在我的搜索字符串上使用ngramfilter,但我不知道为什么。 这是我的设置: 索引设置: { “analysis”: { “analyzer”: { “username_index”: { “tokenizer”: “keyword”, “filter”: [“lowercase”, “username_ngram”] }, “username_search”: { “tokenizer”: “keyword”, “filter”: [“lowercase”] } }, “filter”: { “username_ngram”: { “type”: “edgeNGram”, “side” : “front”, “min_gram”: 1, “max_gram”: 15 } } } } 制图: { “user_follow”: { “properties”: { “targetId”: { “type”: […]

在ElasticSearch中获取SearchResponse的结果

我正在尝试使用ES作为MongoDB的索引。 我已成功地将它们集成,但我发现搜索API相当复杂和令人困惑。 Java API也没有太大帮助。 我能找到完全匹配,但我怎样才能得到这个结果? 这是我的代码: Node node = nodeBuilder().node(); SearchResponse sr = node.client().prepareSearch() .addAggregation( AggregationBuilders.terms(“user”).field(“admin2san”) .subAggregation(AggregationBuilders.terms(“SPT”).field(“64097”)) ) .execute().actionGet(); SearchHit[] results = sr.getHits().getHits(); List myfirewall = results.getSourceAsObjectList(Firewall.class); for (Firewall info : myfirewall) { System.out.println(“search result is ” + info); }

如何在Elasticsearch java api中找到Alias索引?

重新索引需要30秒,每次我需要重新索引时,我不希望我的搜索离线30秒。 我正在尝试这样做: 查找alias = abc123的旧索引 创建新索引并填充新数据 删除别名并删除旧索引 给新索引别名= abc123 我似乎无法找到任何1)的java代码。 其他一切都很好。 任何人? 还是有另一种方式更好? 使用Elasticsearch 0.90.9。