我正在使用ElasticSearch索引文档。
我的映射是:
"mongodocid": {
"boost": 1.0,
"store": "yes",
"type": "string"
},
"fulltext": {
"boost": 1.0,
"index": "analyzed",
"store": "yes",
"type": "string",
"term_vector": "with_positions_offsets"
}
为了突出显示全文,我将其设置number_of_framgments
为0。
如果我执行以下类似于Lucene的字符串查询:
{
"highlight": {
"pre_tags": "<b>",
"fields": {
"fulltext": {
"number_of_fragments": 0
}
},
"post_tags": "</b>"
},
"query": {
"query_string": {
"query": "fulltext:test"
}
},
"size": 100
}
对于结果集中的某些文档,突出显示的全文的长度小于全文本身的长度。由于我将值设置number_of_fragments
为0和pre_tags
/
post_tags
,所以不会发生这种情况。
现在出现奇怪的行为:如果我仅通过执行以下操作搜索失败的元素之一:
{
"highlight": {
"pre_tags": "<b>",
"fields": {
"fulltext": {
"number_of_fragments": 0
}
},
"post_tags": "</b>"
},
"query": {
"query_string": {
"query": "fulltext:test AND mongodocid:4d0a861c2ebef6032c00b1ec"
}
},
"size": 100
}
然后一切正常。
有任何想法吗?
听起来像在0.14.0中已解决的问题(请参阅#479)。在编写0.14.0时尚未发布,您可以尝试使用master吗?
问题内容: 我知道ElasticSearch是基于Apache Lucene构建的,但是我想知道两者之间的显着差异。 问题答案: Lucene是一个 Java库 。您可以将其包含在项目中,并使用函数调用来引用其功能。 Elasticsearch是一个 JSON 基于, 分布式 , 网络服务器 建在Lucene的。尽管是Lucene在做下面的实际工作,但是Elasticsearch为我们提供了一个在
我知道ElasticSearch是基于Apache Lucene构建的,但我想知道两者之间的显著差异。
问题内容: 我对ES官方文档中的以下配额有一个疑问: 如果服务器具有80G内存,则发出以下命令以启动ES节点: 这意味着我只给ES进程提供最大30g内存。Lucene如何使用剩余的50G,因为Lucene在ES流程中运行,所以这只是流程的一部分。 问题答案: 该参数仅指示您为ES Java进程分配了多少 堆 。但是,将RAM分配给堆并不是使用服务器上可用内存的唯一方法。 Lucene确实在ES进程
我知道Elasticsearch为每个索引创建一个数个的碎片,每个碎片都是它自己的Lucene索引。但是有多少Lucene的真实实例是由ElasticSearch启动和维护的呢? 是否每个节点有一个Lucene实例,这意味着该实例每个节点处理Lucene索引?
问题内容: 当我将分析器与Edgengram(最小= 3,最大= 7,前面)+ term_vector = with_positions_offsets一起使用时 使用具有text =“ CouchDB”的文档 当我搜索“ couc”时 我的重点是“ cou”而不是“ couc” 看来我的重点只是在最小匹配令牌“ cou”上,而我希望是在精确令牌(如果可能)上或至少在找到的最长令牌上。 无需使用t
我可以使用Lucene查询ElasticSearch索引吗? 我使用ElasticSearch创建了一个索引,并插入了以下三个文档: null 不幸的是,d.get(“_source”)也返回null。 如何检索匹配查询的文档字段? 谢谢你。