作者回复: dev 模式下,不写,会自动在一个区间内选择一个。你也可以指定端口启动
作者回复: 我不知道具体得上下文,
1.动态字段,如果是字段过多,会导致meta信息膨胀,在集群内传输,导致性能问题
2. 我猜是让你吧数据放到一个inne object中,使用key value的方式存储,因为会有一对多的关系,所以需要用nested object 确保查询能返回预期的结果
作者回复: 使用kibana的 dev tool 有代码的提示和自动完成的,我就是基于dev tool学的,不是一个个字符敲出来的。你可以研究一下dev tool里的一些快捷键
作者回复: 我没有看java类库,不知道这个multi match query是干什么用的。你需要查一下他对应的使用场景,看看使用是否正确。从名字上看对应的ES dsl里的multi fiels query。你需要查一下相关的算分策略如何进行配置。后续有讲解的。
对于你上面的查询,我有两个小建议,第一,能用DSL query 提供的查询,就尽可能少用lucene query。第二,你的查询from sizie的数字上显示分页比较深,可能会有潜在问题,搜索引擎中尽量少深度分页。
作者回复: 因为es会对match query输入做分词处理。标准分词器会做转小写处理。
到后续章节,当你学会到term query,他就不会对你输入的query做分词处理。也不会出现大写转小写的情况
作者回复: 你的这个需求应该引入一个好的分词器即可。
建议听一下后续的中文分词器。只要能分词成安踏和安踏体育,榻榻米和踏踏实实就不会被查询到。默认分词器会按中文的字进行切分,导致查询到了很多无关的内容
作者回复: 后面两个使用确实不算很多。如果很熟悉lucene的查询语法,你可以使用它。
否则,我们会更多的使用es提供的query dsl
作者回复: 这个需要引入中文分词,因为英文分词会按照空格分。而“有女儿”默认把text分成一个字一个字的term
作者回复: 查询分URI查询和DSL查询两大类。
用DSL查询比较多。DSL查询有分term query,match query和一些复合查询。会在第二部分讲解
作者回复: 是bool查询吗?
作者回复: 后面的灵活性降低了,但是更容易写。第一种灵活性最大,但是容易出错
作者回复: 这个api里面填写的是URI query里的语法。你可以查lucene query syntax。也就是字段名冒号➕数值。另外需要了解分组等概念。在我的learning path中,我建议大家先对每一个概念有一个广度优先的了解,都大概使用一下