elasticsearch 2.3.3 需要安装啥插件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了elasticsearch 2.3.3 需要安装啥插件相关的知识,希望对你有一定的参考价值。

参考技术A 一、下载及配置1.几个基本名词index:es里的index相当于一个数据库。type:相当于数据库里的一个表。id:唯一,相当于主键。node:节点是es实例,一台机器可以运行多个实例,但是同一台机器上的实例在配置文件中要确保http和tcp端口不同(下面有讲)。cluster:代表一个集群,集群中有多个节点,其中有一个会被选为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上,构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。replicas:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。2.下载名称版本下载地址elasticsearch1.7.3elasticsearch-1.7.3.tar.gz下载后,放到你的目录下并解压.因为我们要配置包含三个节点的集群,可以先将其重命名为elasticsearch-node1。比如我的是/home/zkpk/elasticsearch-node1。3.修改配置文件(1)初步修改打开/home/zkpk/elasticsearch-node1/config目录下的elasticsearch.yml文件,修改以下属性值并取消该行的注释:cluster.name:elasticsearch#这是集群名字,我们起名为elasticsearch。es启动后会将具有相同集群名字的节点放到一个集群下。node.name:"es-node1"#节点名字。covery.zen.minimum_master_nodes:2#指定集群中的节点中有几个有master资格的节点。对于大集群可以写3个以上。discovery.zen.ping.timeout:40s#默认是3s,这是设置集群中自动发现其它节点时ping连接超时时间,为避免因为网络差而导致启动报错,我设成了40s。discovery.zen.ping.multicast.enabled:false#设置是否打开多播发现节点,默认是true。network.bind_host:192.168.137.100#设置绑定的ip地址,这是我的master虚拟机的IP。network.publish_host:192.168.137.100#设置其它节点和该节点交互的ip地址。network.host:192.168.137.100#同时设置bind_host和publish_host上面两个参数。discovery.zen.ping.unicast.hosts:["192.168.137.100","192.168.137.101","192.168.137.100:9301"]#discovery.zen.ping.unicast.hosts:["节点1的ip","节点2的ip","节点3的ip"]指明集群中其它可能为master的节点ip,以防es启动后发现不了集群中的其他节点。第一对引号里是node1,默认端口是9300,第二个引号里是node3,因为它俩在一台机器上,所以指定了9301端口,第三个是node2,在另外一台机器上。12345678910111213141516171819202122232425262728(2)进一步修改拷贝elasticsearch-node1整个文件夹,两份,一份elasticsearch-node2,一份elasticsearch-node3.将elasticsearch-node2文件夹copy到另外一台IP为192.168.137.101的机器上。而在192.168.137.100机器上有node1和node3.对于node3:node3和node1在一台机器上,node1的配置文件里端口默认分别是9300和9200,所以要改一下node3配置文件里的端口,elasticsearch.yml文件修改如下:node.name:"es-node3"transport.tcp.port:9301http.port:920

elasticsearch中Query DSL中的must和filter有啥区别?

【中文标题】elasticsearch中Query DSL中的must和filter有啥区别?【英文标题】:What is the difference between must and filter in Query DSL in elasticsearch?elasticsearch中Query DSL中的must和filter有什么区别? 【发布时间】:2017-09-07 00:35:32 【问题描述】:

我是弹性搜索的新手,我对必须和过滤器感到困惑。我想在我的术语之间执行一个 and 操作,所以我这样做了

POST /xyz/_search


    "query": 
        "bool": 
            "must": [
                
                    "term": 
                        "city": "city1"
                    
                ,
                
                    "term": 
                        "saleType": "sale_type1"
                    
                
            ]
        
    

这给了我与这两个术语匹配的所需结果,以及使用这样的过滤器

POST /xyz/_search


    "query": 
        "bool": 
            "must": [
                
                    "term": 
                        "city": "city1"
                    
                
            ],
            "filter": 
                "term": 
                    "saleType": "sale_type1"
                
            
        
    

我得到了相同的结果,那么我应该什么时候使用 must 以及什么时候应该使用 filter?有什么区别?

【问题讨论】:

【参考方案1】:

must 有助于得分。在filter中,查询的分数被忽略了。

mustfilter 中,子句(查询)必须出现在匹配的文档中。这就是获得相同结果的原因。

您可以查看link

分数

每个文档的相关性分数由称为_score 的正浮点数表示。 _score 越高,文档的相关性越高。

查询子句为每个文档生成一个_score

要了解如何计算分数,请参阅link

【讨论】:

在使用 must vs 过滤器时并没有真正回答。什么时候得分对任何事情都很重要>? @intiha 使用filter 进行更快的搜索,因为无需计算分数,也无需进行排名。当你关心说相关性时,得分变得很重要。搜索词的出现次数、匹配文档的长度,或者是否要将 boost 添加到查询中以提升匹配文档的排名。 @intiha 如果您的所有查询都是布尔值,那么分数并不重要。过滤器中使用的子句可能会被缓存:“过滤器子句在过滤器上下文中执行,这意味着忽略评分并考虑缓存子句。”参考:elastic.co/guide/en/elasticsearch/reference/current/… 我认为当您有一个复合查询时,它也很重要,其中内部查询的分数用于计算总分。 must_not 也一样。

以上是关于elasticsearch 2.3.3 需要安装啥插件的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch集群入门

ElasticSearch 在windows环境下安装

elasticsearch 2.3.1 要使用啥版本的jackjson

elasticsearch搜索引擎安装部署

elasticsearch部署

ElasticSearch高性能设计