作者回复: dev 模式下,不写,会自动在一个区间内选择一个。你也可以指定端口启动
作者回复: 其实在kibana的dev tool和自己编写程序时,query match的更为常见。query string只需要大概了解。方便在浏览器地址栏里调用,或者是在kibana的ui里就行查询
作者回复: 我不知道具体得上下文, 1.动态字段,如果是字段过多,会导致meta信息膨胀,在集群内传输,导致性能问题 2. 我猜是让你吧数据放到一个inne object中,使用key value的方式存储,因为会有一对多的关系,所以需要用nested object 确保查询能返回预期的结果
作者回复: 我没有看java类库,不知道这个multi match query是干什么用的。你需要查一下他对应的使用场景,看看使用是否正确。从名字上看对应的ES dsl里的multi fiels query。你需要查一下相关的算分策略如何进行配置。后续有讲解的。 对于你上面的查询,我有两个小建议,第一,能用DSL query 提供的查询,就尽可能少用lucene query。第二,你的查询from sizie的数字上显示分页比较深,可能会有潜在问题,搜索引擎中尽量少深度分页。
作者回复: 使用kibana的 dev tool 有代码的提示和自动完成的,我就是基于dev tool学的,不是一个个字符敲出来的。你可以研究一下dev tool里的一些快捷键
作者回复: query string只是给大家简单介绍一下。实际工作中 query match用的更加多一些。query string的好处就是比较容易在浏览器中直接运行
作者回复: 你的这个需求应该引入一个好的分词器即可。 建议听一下后续的中文分词器。只要能分词成安踏和安踏体育,榻榻米和踏踏实实就不会被查询到。默认分词器会按中文的字进行切分,导致查询到了很多无关的内容
作者回复: 后面两个使用确实不算很多。如果很熟悉lucene的查询语法,你可以使用它。 否则,我们会更多的使用es提供的query dsl
作者回复: 查询分URI查询和DSL查询两大类。 用DSL查询比较多。DSL查询有分term query,match query和一些复合查询。会在第二部分讲解
作者回复: 后面的灵活性降低了,但是更容易写。第一种灵活性最大,但是容易出错