Tag: elasticsearch

为什么我不能通过Java API连接到ElasticSearch?

我无法通过Java API连接到vanilla ElasticSearch集群。 重现: #start elasticsearch elasticsearch -f #checking in a new window $ curl -XPUT ‘http://localhost:9200/twitter/tweet/1’ -d ‘{\ “user” : “kimchy”,\ “post_date” : “2009-11-15T14:12:12”,\ “message” : “trying out Elastic Search”\ }’ 结果: { “ok”: true, “_index”: “twitter”, “_type”: “tweet”, “_id”: “1”, “_version”: 3 } $ curl -XGET ‘http://localhost:9200/twitter/tweet/_search?q=user:kimchy’ 结果: { “took”: 2, “timed_out”: false, […]

elasticsearch将对象插入索引

我是elasticsearch的新手,并且正在寻找使用Java API的一些帮助。 我有一些域对象例如 @XmlRootElement public class BasicActivity { private String activityName; private FullActivity activity; // Getters and setters } 我创建了一个连接到节点的传输客户端 Client client = new TransportClient() .addTransportAddress(new InetSocketTransportAddress(“192.168.0.198”,9300)); 有没有简单的方法将我的对象直接插入elasticsearch? 我见过这个 IndexResponse response = client.prepareIndex(“twitter”, “tweet”, “1”) .setSource(jsonBuilder() .startObject() .field(“user”, “kimchy”) .field(“postDate”, new Date()) .field(“message”, “trying out Elastic Search”) .endObject() ) .execute() .actionGet(); 但要做到这一点,我必须将每个对象转换为json,尽管这可能不是我理想的情况。 如果我误解了它的工作原理(架构上)那么请告诉我,我来这里学习! 欢呼,罗布

Elasticsearch:使用Java添加手动映射

我无法改变映射。 任何人都可以帮我找到我的代码中的错误吗? 我已经找到了这种标准方法来根据几个教程更改映射。 但是当我尝试调用映射结构时,在创建manuall映射之后会出现一个空白的映射结构。 但是在插入一些数据之后会出现映射规范,因为ES当然是默认的。 更具体地说,请参阅下面的代码。 public class ElasticTest { private String dbname = “ElasticSearch”; private String index = “indextest”; private String type = “table”; private Client client = null; private Node node = null; public ElasticTest(){ this.node = nodeBuilder().local(true).node(); this.client = node.client(); if(isIndexExist(index)){ deleteIndex(this.client, index); createIndex(index); } else{ createIndex(index); } System.out.println(“mapping structure before data […]

在ElasticSearch中使用Java API时如何从JSON DSL构造QueryBuilder?

我在Spring Web项目中使用ElasticSearch作为搜索服务,使用Transport Client与ES进行通信。 我想知道是否存在可以从JSON DSL构造QueryBuilder的方法。 例如,将此bool查询DSL JSON转换为QueryBuilder。 { “query” : { “bool” : { “must” : { “match” : {“content” : “quick”}, “should”: { “match”: {“content” : “lazy”} } } } 我需要这种方法,因为我必须从Web前端接收用户的bool字符串输入,并将此bool字符串解析为QueryBuilder。 但是它不适合使用QueryBuilders.boolQuery().must(matchQB).should(shouldQB).must_not(mustNotQB) 。 因为我们可能需要几个必须或非必须查询。 如果存在一个方法可以从JSON DSL构造一个QueryBuilder,或者存在替代解决方案,那将更容易。 PS:我找到了两种方法可以将DSL字符串包装到QueryBuilder进行ES搜索。 一个是WrapperQueryBuilder ,请参阅此处的详细信息。 http://javadoc.kyubu.de/elasticsearch/HEAD/org/elasticsearch/index/query/WrapperQueryBuilder.html另一个是QueryBuilders.wrapperQuery (String DSL)。

ElasticSearch和Java环境变量

对于Windows 7,我已经在32位和64位版本中安装了JDK。 版本为8,所有四个安装的更新20。 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 当我下载并解压弹性搜索,并运行/bin/service.bat或/bin/elasticsearch.bat文件时,我进入我的终端: JAVA_HOME environment variable must be set! Press any key to continue . . . 当我这样做时,终端关闭。 我已经卸载并重新安装,但是没有解决它。 为什么环境变量不会被设置? 它是安装的东西,还是我实际上必须手动设置变量。 它似乎如果安装正确,它会自动设置变量…请帮助。 谢谢 我使用它手动设置JAVA_HOME环境变量。 https://confluence.atlassian.com/display/DOC/Setting+the+JAVA_HOME+Variable+in+Windows 我的路径是C:\Progra~1\Java\jdk1.8.0_20\jre 现在,当我运行service.bat时,终端在打开时立即关闭。 当我运行elasticsearch.bat时,终端会打印一些行,过了一会儿,它就会停留在那里,我无法输入任何内容。 编辑: 我卸载了所有java,只重新安装了JRE 64位,并将系统环境变量设置为JAVA_HOME和`C:\ Progra~1 \ Java \ jre1.8.0_20 我发现有一个CLASSPATH被设置为一个32位,更旧的java版本。 我应该删除该变量吗?

如何在Java或Python中使用文件系统缓存?

最近在Elasticsearch网站上发表的博客文章讨论了他们新的1.4测试版的function。 我很好奇他们如何使用文件系统缓存: 最近的版本增加了对doc值的支持。 实质上,doc值提供与内存中fielddata相同的function,但它们在索引时写入磁盘。 它们提供的好处是它们占用的堆空间非常小。 Doc值是从磁盘读取的,而不是从内存中读取的。 虽然磁盘访问速度很慢,但doc值会受益于内核的文件系统缓存。 与JVM堆不同,文件系统缓存不受32GB限制的约束。 通过将fielddata从堆转移到文件系统缓存,您可以使用更小的堆,这意味着更快的垃圾收集,从而更稳定的节点。 在此版本之前,doc值明显慢于内存中fielddata。 此版本中的更改显着提高了性能,使其几乎与内存中的fielddata一样快。 这是否意味着我们可以操纵文件系统缓存的行为而不是被动地等待操作系统的影响? 如果是这种情况,我们如何在正常的应用程序开发中使用文件系统缓存? 比如,如果我正在编写Python或Java程序,我该怎么做?

ElasticSearch仅返回具有不同值的文档

假设我有这个给定的数据 { “name” : “ABC”, “favorite_cars” : [ “ferrari”,”toyota” ] }, { “name” : “ABC”, “favorite_cars” : [ “ferrari”,”toyota” ] }, { “name” : “GEORGE”, “favorite_cars” : [ “honda”,”Hyundae” ] } 每当我在搜索最喜欢的汽车是丰田的人时查询这些数据,它就会返回这些数据 { “name” : “ABC”, “favorite_cars” : [ “ferrari”,”toyota” ] }, { “name” : “ABC”, “favorite_cars” : [ “ferrari”,”toyota” ] } 结果是两个名称为ABC的记录。 如何仅选择不同的文档? 我想得到的结果只是这个 […]

实现twitter和facebook就像hashtags一样

这可能看起来很愚蠢..而且没有研究的问题,但相信我不是。 我做了一些研究。 其中一个将是以下链接: http : //www.quora.com/Twitter-1/How-does-Twitter-implement-hashtags 此外,我不是在寻找一个完整的解决方案..我会努力工作,但我只需要一些指导,只想知道我应该采用哪种方式? 我想实现twitter,现在甚至像我的应用程序的hash标签一样。所以用户可以添加带有主题标签的消息,而其他人可以搜索它们…就像趋势和相关内容一样。 我们在存储技术堆栈中使用Mysql,mongo和elasticsearch。 任何想法我怎么能开始实现这个? 我需要另一个存储空间吗? 一种方法是我可以将我的hastags存储在db中,然后在Elasticsearch中对它们进行文本搜索。 在这个领域有更多经验的人可以在这里提出什么建议?

将数据从Oracle /关系表索引到弹性搜索的更好方法是什么?

将大数据从Oracle DB索引到弹性搜索集群有哪些选项? 要求是将300Million记录一次索引到多个索引中,并且每天还有大约100万次更改的增量更新。 我已尝试过弹性搜索河/馈线的 JDBC插件,两者似乎都在内部运行或需要本地运行的弹性搜索实例。 如果有更好的选择将弹性搜索索引器作为一个独立的工作(可能是基于java的)运行,请告诉我。 任何建议都会非常有帮助。 谢谢。

elasticsearch NodeBuilder与TranportClient

对于其他弹性搜索开发者来说可能是一个非常简单(和愚蠢)的问题,这两者之间有什么区别? 我正在从Java webapp连接到远程elasticsearch服务器,到目前为止我一直在使用TransportClient,但我想知道是否可以使用NodeBuilder,或者NodeBuilder应该只用于嵌入式客户端? 如果两者中的任何一个都可用于连接到远程ES服务器,哪一个在内存和性能方面应该更好? 如果有人能指出我连接到远程ES服务器的NodeBuilder示例会很棒,因为我没有任何幸运的发现。 谢谢。