小编Ama*_*tle的帖子

在Elasticsearch中存储HTML文档

脚本

我有HTML文档,比方说:电子邮件.我想将这些存储在弹性搜索中并搜索HTML电子邮件的明文.

问题

Elasticsearch也将索引所有HTML标记和属性.我不希望这样.我想搜索span它是否是纯文本,而不是html元素.例如,<span>span</span>可能是一个打击,但不是<span>some other content</span>.

您是否建议在文档中存储HTML剥离字段和HTML字段?或者我应该在S3上存储HTML文档,而是在弹性搜索中留下剥离的HTML版本?它甚至有意义吗?

老实说,如果弹性搜索正在索引HTML文档,我不知道会发生什么,但我可以想象它还将索引div和spans以及所有属性.这些是我完全不寻找的东西.所以:任何解决这个问题的建议都会很棒!

我现在在做什么?

就在我将文档存储在ES中之前,我检查文档类型是否存在索引.如果没有,我创建一个具有给定映射的集合.映射看起来像这样

{
    "analysis": {
        "analyzer": {
            "htmlStripAnalyzer": {
                "type": "custom",
                "tokenizer": "standard",
                "filter": "standard",
                "char_filter": [
                    "html_strip"
                ]
            }
        }
    },
    "mappings": {
        "${type}": {
            "dynamic_templates": [
                {
                    "_metadata": {
                        "path_match": "_metadata.*",
                        "mapping": {
                            "type": "keyword"
                        }
                    }
                }
            ],
            "properties": {
                "_tags": {
                    "type": "nested",
                    "dynamic": true
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

警告:忽略现有映射.这与我的意图无关.他们就在那里.

我要用文档类型替换$ {type} emails. 告诉ES不要将HTML内容编入索引是什么意思?

html elasticsearch

6
推荐指数
1
解决办法
5545
查看次数

InvalidProgramException(无效的 IL 代码)?

我试图在运行时将以下代码作为 IL 代码发出。

    class TestObject {
        public int Hello {get;set;}
        public int Test {get;set;}
    }

    static TestObject test(BinaryReader reader) {
        var a = new TestObject();
        a.Hello = reader.ReadInt32();
        a.Test = reader.ReadInt32();
        return a;
    }
Run Code Online (Sandbox Code Playgroud)

LINQPad 显示:

test:
IL_0000:  nop         
IL_0001:  newobj      UserQuery+TestObject..ctor
IL_0006:  stloc.0     // a
IL_0007:  ldloc.0     // a
IL_0008:  ldarg.0     
IL_0009:  callvirt    System.IO.BinaryReader.ReadInt32
IL_000E:  callvirt    UserQuery+TestObject.set_Hello
IL_0013:  nop         
IL_0014:  ldloc.0     // a
IL_0015:  ldarg.0     
IL_0016:  callvirt    System.IO.BinaryReader.ReadInt32
IL_001B:  callvirt    UserQuery+TestObject.set_Test
IL_0020:  nop         
IL_0021:  ldloc.0     // a
IL_0022:  stloc.1 …
Run Code Online (Sandbox Code Playgroud)

c# intermediate-language

5
推荐指数
1
解决办法
4667
查看次数

标签 统计

c# ×1

elasticsearch ×1

html ×1

intermediate-language ×1