Tag: elasticsearch

如何在ElasticSearch中添加分析器设置?

我正在使用ElasticSearch 1.5.2,我希望有以下设置: “settings”: { “analysis”: { “filter”: { “filter_shingle”: { “type”: “shingle”, “max_shingle_size”: 2, “min_shingle_size”: 2, “output_unigrams”: false }, “filter_stemmer”: { “type”: “porter_stem”, “language”: “English” } }, “tokenizer”: { “my_ngram_tokenizer”: { “type”: “nGram”, “min_gram”: 1, “max_gram”: 1 } }, “analyzer”: { “ShingleAnalyzer”: { “tokenizer”: “my_ngram_tokenizer”, “filter”: [ “standard”, “lowercase”, “filter_stemmer”, “filter_shingle” ] } } } […]

ElasticSearch全文搜索

我尝试在弹性搜索java api上使用正则表达式运行全文搜索。 我的filter是这样的: FilterBuilder qFilter= FilterBuilders.regexpFilter(“_all”, “. *”+text+”. *”); 但它只与一个单词匹配而不是短语。 我的意思是,例如: 如果在soruce中有一个字符串,如:“ one two three four five.. ”,当我的文本字符串如下:“ two ”,“ our ”,“ thr ”……那么它就可以了。 但是当我的realTimeTextIn字符串是“ two three ”时,全文搜索不起作用。 我不能搜索一个以上的单词。 我在这里缺少什么? 其余的代码是这样的: FilterBuilder qFilter = FilterBuilders.regexpFilter(“_all”, “.*”+q+”.*”); SearchResponse response = ClientProvider.instance().getClient().prepareSearch(index) .setTypes(type) .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) .setPostFilter(qFilter) .setFrom(0).setSize(250).setExplain(true) .execute() .actionGet(); 谢谢你的帮助。

ElasticSearch – 定义排序的自定义字母顺序

我正在使用ElasticSearch 2.4.2(来自Java的HibernateSearch 5.7.1.Final)。 我有字符串排序的问题。 我的应用程序的语言有变音符号,它具有特定的字母顺序。 例如, Ł直接在L之后, Ó在O之后,等等。所以你应该像这样排序字符串: Dla Dła Doa Dóa Dza Eza ElasticSearch首先按典型字母排序,并在结尾处移动所有奇怪的字母: Dla Doa Dza Dła Dóa Eza 我可以为ElasticSearch添加自定义字母顺序吗? 也许有一些插件吗? 我需要编写自己的插件吗? 我该如何开始? 我为ElasticSearch找到了一个波兰语插件 ,但据我所知它是用于分析,并且分析在我的情况下不是解决方案,因为它会忽略变音符号并留下L和Ł混合的单词: Dla Dłb Dlc 这有时是可以接受的,但在我的具体用例中是不可接受的。 对此有任何评论我将不胜感激。

使用elasticsearch对文本进行分类

我目前正在开发一个涉及从文本中识别不同“关键字”的项目。 作为示例,我们假设以下输入文本: “这是布宜诺斯艾利斯关于肉类的一些文字的例子”。 进一步假设我的elasticsearch实例存储了以下文档: 城市:[巴塞罗那,布宜诺斯艾利斯,洛杉矶……] 和 分类:[金融,政治,……] 我需要一种方法来从输入文本中识别相应的城市和类别。 我的第一种方法是使用“或”运算符进行搜索查询,并查看哪一个具有最高排名。 之后,我还将匹配的文件与文本重新匹配,以确保这些文本真的存在(换句话说,确保“洛杉矶”匹配,因为“洛杉矶”一词在文本中,只有“洛杉矶”或“洛杉矶)。 我想知道它是否是使用Elasticsearch做这种事情的最佳实践方式。

自动将ElasticSearch与SQL同步

我运行了这个查询,效果很好。 curl -XPUT ‘localhost:9200/_river/my_jdbc_river/_meta’ -d ‘{ “type” : “jdbc”, “jdbc” : { “url” : “jdbc:mysql://localhost:3306/test”, “user” : “myaccount”, “password” : “myaccount”, “sql” : “select * from orders” } }’ 一切似乎都被编入索引。 但是,当我从Orders表中更改数据时,更改并未反映ElasticSearch中的文档。 是否可以自动同步更新/更改的数据?

SSL Elasticsearch

我有一个es_client (java/dropwizard)应用程序。 它通过纯文本连接与弹性搜索进行通信。 我按照https://github.com/sonian/elasticsearch-jetty上的说明为es client设置了SSL。 但是,当我启动es_client它每5秒报告一次: INFO [2014-01-08 23:02:14,814] org.elasticsearch.client.transport: [Karolina Dean] failed to get node info for [#transport#-1][inet[localhost/127.0.0.1:9443]], disconnecting… ! org.elasticsearch.transport.NodeDisconnectedException: [][inet[localhost/127.0.0.1:9443]][cluster/nodes/info] disconnected 我该如何解决这个问题呢? 谢谢,Maciej

在弹性搜索高级客户端中为JAVA添加身份validation

我在使用X-PACK保护的弹性云实例中使用了弹性搜索实例。 我以前一直在使用高级rest客户端没有任何问题,但我无法找到如何发送基本身份validation标头。 我试图将凭据作为URL的一部分,但在这种情况下它似乎无法连接。 有没有人成功连接到高级rest客户端的安全弹性搜索? 干杯,

Kafka制作人发送无效字符

使用以下代码,我发送Elasticsearch文档以进行索引。 我尝试将基本对象转换为JSON并通过制作人发送。 但是,每条消息(从控制台检查)都附加了像 – t {“productId”:2455这样的乱码字符 public boolean sendMessage() { PageRequest page = new PageRequest(0, 1); Product p = product.findByName(“Cream”, page).getContent().get(0); String json = “”; ObjectMapper mapper = new ObjectMapper(); try { json = mapper.writeValueAsString(p); } catch (JsonProcessingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } logger.info(“JSON = ” + json); boolean status = […]

使用Java客户端和X-Pack / HTTPS连接到ElasticSearch Cloud 5.x.

是否可以使用X-Pack通过HTTPS连接到ElasticSearch? 随着切换到使用证书,自己的连接方式不再起作用。 我使用证书没有问题,但我需要知道从哪里获取或将密钥上传到云实例,但我无法在任何地方找到信息。 我也没有得到论坛或IRC中任何人的回答。 有没有人成功完成这个? 启动5.x实例时不再有警告,所以我认为这是可能的,但我无法弄清楚如何做到这一点。 我还被告知我不能再启动一个2.4.1实例,只有2.4.2可用(到目前为止太不稳定)所以我有点不能启动一个可用的实例。 更新 有人告诉我,因为使用了公共CA,所以不需要证书。 但是,我仍然无法弄清楚如何连接到5.1.1实例。 Settings settings = Settings.builder() .put(“transport.ping_schedule”, “5s”) .put(“cluster.name”, “”) .put(“xpack.security.transport.ssl.enabled”, “true”) .put(“xpack.security.user”, “elastic:”) .build(); String hostname = “.us-east-1.aws.found.io”; TransportClient client = new PreBuiltXPackTransportClient(settings) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(hostname), 9343)); 我在这做错了什么? 我收到一个错误,说节点不可用。 Exception in thread “main” NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{xlhZqKBCQniYrN4OWzByFQ}{.us-east-1.aws.found.io}{:9343}]] 我还尝试使用transport_client角色创建用户,但仍然是同样的错误。 更新2 我从这里尝试了示例代码,它仍然无效。 https://github.com/elastic/found-shield-example/blob/master/src/main/java/org/elasticsearch/cloud/transport/example/TransportExample.java 这是您可以测试的实例。 在我弄清楚这个问题之后,我会把它毁掉。 […]

Elasticsearch提高了查询性能

我正在尝试提高查询性能。 对于甚至没有触及嵌套文档的简单查询,平均需要大约3秒,并且有时更长。 curl “http://searchbox:9200/global/user/_search?n=0&sort=influence:asc&q=user.name:Bill%20Smith” 即使没有那种,它需要几秒钟。 以下是群集的详细信息: 1.4TB index size. 210m documents that aren’t nested (About 10kb each) 500m documents in total. (nested documents are small: 2-5 fields). About 128 segments per node. 3 nodes, m2.4xlarge (-Xmx set to 40g, machine memory is 60g) 3 shards. Index is on amazon EBS volumes. Replication 0 (have tried […]