Tag: elasticsearch

将映射添加到Java的一个types – 我该怎么做?

我试图用Java API或多或less地重新创build这个例子 。 我想我需要的只是添加一个映射到索引,但Java API文档不完全清楚如何做到这一点。 请告诉我如何在Java中创build一个与文档中的示例相同的映射: curl -X PUT localhost:9200/test/tweet/_mapping -d '{ "tweet" : { "_ttl" : { "enabled" : true, "default" : "1d" } } }' 这是我的代码: package foo; import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; import java.io.IOException; import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequestBuilder; import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse; import org.elasticsearch.action.get.GetRequestBuilder; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.client.Client; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.transport.InetSocketTransportAddress; […]

Elasticsearch:查找子串匹配

我想要执行确切的单词匹配和部分单词/子串匹配。 例如,如果我search“男士razor”,那么我应该能够在结果中find“男士razor”。 但是,如果我search“en的razor”,那么我也应该能够find“男士razor”的结果。 我使用以下设置和映射: 索引设置: PUT /my_index { "settings": { "number_of_shards": 1, "analysis": { "filter": { "autocomplete_filter": { "type": "edge_ngram", "min_gram": 1, "max_gram": 20 } }, "analyzer": { "autocomplete": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", "autocomplete_filter" ] } } } } } 映射: PUT /my_index/my_type/_mapping { "my_type": { "properties": { "name": { "type": […]

重新启动elasticsearch节点

在elasticsearch中重新启动节点的正确方法是什么? (最好通过REST API,java API也可以)

有没有更聪明的方法来重新索引elasticsearch?

我问,因为我们的search处于不断变化的状态,但是每当我们对索引进行更改(更改标记器或filter,或者分片/副本的数量)时,我们不得不吹掉整个索引,将所有Rails模型重新索引到Elasticsearch中…这意味着我们必须考虑停机时间来重新索引所有logging。 有没有更聪明的方法来做到这一点,我不知道?

如何在Rails应用程序中testingElasticSearch(Rspec)

我想知道如何在使用ElasticSearch和Tire时在应用程序中testingsearch。 如何设置新的ElasticSearchtesting实例? 有没有办法嘲笑它? 你知道的任何gem可以帮助吗? 有些东西,我发现有帮助: 我发现了一篇很好的文章,回答了我所有的问题:) http://bitsandbit.es/post/11295134047/unit-testing-with-tire-and-elastic-search#disqus_thread 另外,轮胎作者Karmi有一个答案。 这也很有用: https : //github.com/karmi/tire/wiki/Integration-Testing-Rails-Models-with-Tire 我不敢相信在问之前我没有find这些…

没有注册

我有一个查询,我需要筛选结果。 这是我的查询 { "query": { "filtered": { "query": { "multi_match": { "default_operator": "AND", "fields": [ "author", "title", "publisher", "year" ], "query": "George Orwell" } }, "filter": { "terms": { "year": [ 1980, 1981 ] } } } } } 我得到一个错误,说no [query] registered for [filtered] 。 我清楚地有一个查询过滤字段。 我正在按照弹性search页面上过滤的查询文档中给出的格式。 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html

Elasticsearch“没有请求添加”批量API错误

尝试使批量更新在ES 1.0.1上工作。 我在邮递员张贴以下内容: URL POST或PUT到http://localhost:9200/_bulk 请求正文 : { "update" : { "_index" : "test_people", "_type" : "person", "_id" : "1" }} \n { "doc" : { "name":"hi", "age":100 }} \n 我已经尝试过,没有\n 。 我总是得到 { "error": "ActionRequestValidationException[Validation Failed: 1: no requests added;]", "status": 500 } 它也使用数据创build同样的事情: { "create": { "_index": "test_people", "_type": "person", "_id": "1" } […]

elasticsearch – 如何处理未分配的碎片

我的群集处于黄色状态,因为一些碎片未被分配。 该怎么办? 我试过对所有索引设置cluster.routing.allocation.disable_allocation = false ,但我认为这是行不通的,因为我使用的是1.1.1版本。 我也试过重新启动所有的机器,但是也是一样的。 任何想法? 编辑: 群集统计: { cluster_name: "elasticsearch", status: "red", timed_out: false, number_of_nodes: 5, number_of_data_nodes: 4, active_primary_shards: 4689, active_shards: 4689, relocating_shards: 0, initializing_shards: 10, unassigned_shards: 758 }

如何重命名群集中的索引?

我需要重命名群集中的多个索引(它们的名称必须更改,我不能使用别名 )。 我看到有没有支持的方式来做到这一点,我发现最接近的是重命名索引的目录 ,我试图在一个集群中。 群集有3台机器A , B和C ,分别在其上复制碎片。 我closures了A上A /var/lib/elasticsearch/security/nodes/0/indices/oldindexname将/var/lib/elasticsearch/security/nodes/0/indices/newindexname /var/lib/elasticsearch/security/nodes/0/indices/oldindexname重命名为/var/lib/elasticsearch/security/nodes/0/indices/oldindexname /var/lib/elasticsearch/security/nodes/0/indices/newindexname并重新启动。 集群的状态是黄色的,弹性search正在做一些魔术来恢复正确的状态。 过了一段时间,我结束了 oldindexname可用并完全复制(从B和C恢复,我猜) newindexname可用(我可以search它),但头插件显示它的碎片处于“未分配”状态,并且它们变灰(不复制) 在恢复期间, security.log显示以下消息: [2015-02-20 11:02:33,461][INFO ][gateway.local.state.meta ] [A.example.com] dangled index directory name is [newindexname], state name is [oldindexname], renaming to directory name 虽然newindexname是可search的,但肯定不是正常状态。 我通过删除newindexname回滚到以前的状态。 群集恢复为绿色,没有任何“未分配”条目。 鉴于此,我如何将oldindexname重命名为集群中的newindexname ? 注意:我想到的最终解决scheme是将oldindex滚动复制到newindex然后删除oldindex 。 这将需要时间,所以如果有更直接的解决scheme,这将是伟大的。

Elasticsearch 2.1:结果窗口太大(index.max_result_window)

我们从Elasticsearch 2.1中检索信息,并允许用户查看结果。 当用户请求高页码时,我们得到以下错误信息: 结果窗口太大,从+大小必须小于或等于:[10000],但是[10020]。 请参阅滚动API以获取更大的数据集请求。 这个限制可以通过改变[index.max_result_window]索引级别参数来设置 弹性文件说,这是因为高内存消耗和使用滚动api: 高于的值可能会消耗大量的每个search和每个分片执行search的堆内存。 这是最安全的离开这个值,因为它是一个使用滚动api的任何深度滚动https://www.elastic.co/guide/en/elasticsearch/reference/2.x/breaking_21_search_changes.html#_from_size_limits 问题是我不想检索大型数据集。 我只想从结果集中非常高的数据集中检索切片。 另外滚动文件说: 滚动不是用于实时用户请求https://www.elastic.co/guide/en/elasticsearch/reference/2.2/search-request-scroll.html 这给我留下了一些问题: 1)如果我使用滚动API滚动到结果10020(并忽略10000以下的所有内容),而不是对结果10000-10020执行“正常”search请求,内存消耗是否真的会降低(如果是这样,为什么)? 2)似乎没有滚动的API是我的select,但我不得不增加“index.max_result_window”。 有人对这个有经验么? 3)还有其他的select来解决我的问题吗?